我将所有event_id
存储为斑点类型,并希望一次选择多个event_id
。
如果我一一发送查询,效果很好。像这样一个:
SELECT JSON event_id, user FROM demo.events WHERE customer_id=1234 AND event_id=0x123123;
但是我想使用IN
子句同时查询多个event_id
。我尝试了以下CQL,但失败了:
SELECT JSON event_id, user FROM demo.events WHERE customer_id=1234 AND event_id in [0x123123, 0x456456, 0x789789];
给出错误信息
SyntaxException: line 1:106 no viable alternative at input 'event_id'
有人可以告诉我是否可以这样做?谢谢。
IN
运算符requires tuble_literal
位于表达式的右侧。可以用Tuples定义()
。在您的情况下,IN (x, y, z)
将起作用:
$ create table test.a (customer_id int, event_id blob, user text, PRIMARY KEY (customer_id, event_id));
$ insert into test.a (customer_id, event_id, user) values (1, 0x123123, 'a');
$ insert into test.a (customer_id, event_id, user) values (1, 0x123124, 'a');
$ insert into test.a (customer_id, event_id, user) values (1, 0x123125, 'a');
$ SELECT JSON event_id, user FROM test.a WHERE customer_id=1 AND event_id in (0x123123, 0x123124);
[json]
---------------------------------------
{"event_id": "0x123123", "user": "a"}
{"event_id": "0x123124", "user": "b"}
(2 rows)