我想通过 CQL3 中的行键以外的复合键查询数据过滤。这些是我的疑问:
CREATE TABLE grades (id int,
date timestamp,
subject text,
status text,
PRIMARY KEY (id, subject, status, date)
);
当我尝试访问数据时,
SELECT * FROM grades where id = 1098; //works fine
SELECT * FROM grades where subject = 'English' ALLOW FILTERING; //works fine
SELECT * FROM grades where status = 'Active' ALLOW FILTERING; //gives an error
错误请求:PRIMARY KEY 部分状态不能被限制(前面的部分主题要么不受限制,要么受非 EQ 关系限制)
只是为了试验,我改变了保持“id”作为我的主行键的键。考虑到上面的示例,我始终只能使用主行键或第二个键进行查询,如果我在主键列表中交换主题和状态,我可以使用状态进行查询,但如果我尝试这样做,我会遇到类似的错误主题或时间。
难道我做错了什么?我可以不使用 CQL3 中的任何其他复合键查询数据吗?我正在使用 Cassandra 1.2.6 和 CQL3。