【问题标题】:Sorting order in cassandra resultcassandra结果中的排序顺序
【发布时间】:2017-04-15 20:54:24
【问题描述】:

我创建了表格

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 中的表进行排序

【问题讨论】:

    标签: sorting cassandra datastax cql


    【解决方案1】:

    您在未指定任何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 inside 分区排序,这就是为什么您需要使用WHERE 子句过滤查询以获得您的 顺序。

    如果您想保持 posteddata DESC 顺序,您需要创建另一个表(您已经拥有的那个很好)并插入/更新两个表。

    【讨论】:

      猜你喜欢
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多