是否可以在select语句Cassandra中的where子句之后传递任何其他列

时间:2012-04-12 12:37:17

标签: select primary-key cassandra where cql

我一直在尝试使用此命令从Cassandra数据库中检索数据:

 select A_NO from Activity where CALL_TYPE IN ('MOC');//here CALL_TYPE is not the row id

但它显示:

Expected key 'KEY' to be present in where clause for 'Activity'

在cassandra中是否有可能借助非主键过滤数据?

1 个答案:

答案 0 :(得分:6)

您不能直接在香草列系列上执行此操作。 Cassandra默认情况下只允许您查询键或键范围。您可以通过在列

上创建二级索引来实现此目的

您可以像这样运行CQL查询来创建两个索引:

cqlsh> CREATE INDEX state_key ON users (state);
cqlsh> CREATE INDEX birth_year_key ON users (birth_year);

然后像这样查询:

cqlsh> SELECT * FROM users
 ... WHERE gender='f' AND
 ...  state='TX' AND
...  birth_year='1968';

Here is more on Secondary indexes.

Here is the documentation on using CQL for this.