Sorting cassandra结果中的排序顺序
我创建了一个表Sorting cassandra结果中的排序顺序,sorting,cassandra,datastax,cql,Sorting,Cassandra,Datastax,Cql,我创建了一个表 CREATE TABLE testtab ( testtabmainid bigint, testtabid timeuuid, posteddate timestamp, description text, year bigint, month bigint, day bigint, PRIMARY KEY ((year,month,day),posteddate,testtabmainid) ) WITH CLUSTERING ORDER
CREATE TABLE testtab (
testtabmainid bigint,
testtabid timeuuid,
posteddate timestamp,
description text,
year bigint,
month bigint,
day bigint,
PRIMARY KEY ((year,month,day),posteddate,testtabmainid)
) WITH CLUSTERING ORDER BY (posteddate DESC,testtabmainid desc);
然后
SELECT testtabmainid,posteddate,year,month, day FROM testtab;
我得到了这样的结果
testtabmainid年月日
90/2016-12-01 11:19:11+0530/2016/11/30
89/2016-11-30 16:21:58+0530/2016/11/30
88/2016-11-30 16:13:33+0530/2016/11/30
91/2016-12-01 11:20:42+0530/2016/12/1
最后一行未按排序顺序排列。我需要顶部的最后一行(testtabmainid=91)
我需要以desc方式对testtabmainid中的表进行排序,而不指定任何
WHERE
子句。这将生成由应用于分区密钥数据的标记函数排序的结果
为了满足查询,首先需要将表定义更改为:
CREATE TABLE testtab (
testtabmainid bigint,
testtabid timeuuid,
posteddate timestamp,
description text,
year bigint,
month bigint,
day bigint,
PRIMARY KEY ((year,month,day),testtabmainid,posteddate)
) WITH CLUSTERING ORDER BY (testtabmainid desc,posteddate DESC);
然后将查询更改为:
SELECT testtabmainid,posteddate,year,month, day
FROM testtab
WHERE year=2016 AND
month=12 AND
day=1;
关键的一点是,数据是由集群键在分区内进行排序的,这就是为什么需要使用WHERE
子句过滤查询以获得顺序
如果要保持posteddata DESC顺序,则需要创建另一个表(现有的表很好)并插入/更新这两个表