我创建了这样的表。。
CREATE TABLE test1.mytest (
id text,
year text,
time bigint,
crtby text,
data text,
postid text,
upby text,
PRIMARY KEY ((id, year), time)
) WITH CLUSTERING ORDER BY (time DESC)
我想根据时间键对数据进行排序。
SELECT * FROM test1.mytest WHERE id ='b' ORDER BY time asc ALLOW FILTERING ;
当我尝试上述命令时,我得到
InvalidRequest: Error from server: code=2200 [Invalid query] message="ORDER BY is only supported when the partition key is restricted by an EQ or an IN."
1条答案
按热度按时间envsm3lx1#
错误清楚地描述了失败的原因。您的主键是id和year,然后按time键进行进一步的聚类。
Cassandra需要知道身份证和年份,只有这样才能按时下单。
由于在查询中并不总是使用分区键(id,year),要按时间排序,就必须使用物化视图。更多细节可以在这里找到。