使用以下表定义:
CREATE TABLE device_by_create_date (
year int,
comm_nr text,
created_at timestamp,
PRIMARY KEY ((year, comm_nr), created_at)
) WITH CLUSTERING ORDER BY (created_at DESC)
Comm_nr
是唯一标识符。
我希望看到按created_at
列排序的数据,但在添加数据时并非如此。
示例条目:
表CQL:
如何发出select * from table;
个查询,这些查询返回created_at
行排序的数据?
答案 0 :(得分:4)
TLDR :您需要创建一个新表。
您的分区键为(year, comm_nr)
。您已经订购了created_at密钥,但是在该分区密钥中订购了它。查询,其中SELECT * FROM table WHERE year=x AND comm_nr=y;
将按created_at排序。
此外,如果您的密钥不是(year, comm_nr), created_at
而是year, comm_r, created_at
,即使您的创建表语法仅将created_at指定为具有群集顺序,它也会被创建为WITH CLUSTERING ORDER BY (comm_nr DESC, created_at DESC)
。数据在SSTables中按键从左到右排序。
以真正的nosql方式执行此操作的方法是创建一个单独的表,其中您的密钥是year, created_at, comm_nr
。您可以在用户创建时写入两者,但如果您需要首先创建其帐户的人的答案,则可以查询新表。