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顺序,则需要创建另一个表(现有的表很好)并插入/更新这两个表