我创建了表
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中的表进行排序
答案 0 :(得分:2)
您在未指定任何WHERE
子句的情况下进行了查询。这会生成应用于分区键数据的TOKEN
函数排序的结果。
为了满足您的查询,您需要首先将表定义更改为:
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;
关键是数据是由CLUSTERING KEY
仅内部分区排序的,这就是为什么您需要使用WHERE
子句过滤查询以获取<你的订单。
如果您想保留 posteddata DESC 订单,您需要创建另一个表(您已经拥有的表),并插入/更新两个表。