【问题标题】:How to use ORDER BY with IN statement in cassandra query in DevCenter如何在 DevCenter 的 cassandra 查询中使用 ORDER BY 和 IN 语句
【发布时间】:2019-06-30 02:31:00
【问题描述】:

尝试在 DevCenter 中对 Cassandra 查询的 IN 语句使用“order by”子句。 无法在 DevCenter 中分页

我有桌子 model_vals:


-----------------------------------------------
type_code         date                 item_code
-------------------------------------------------
TYPE_0           2018-03-31           CREDITS
TYPE_10          2018-03-31           CREDITS  
TYPE_25          2018-03-31           CREDITS
TYPE_50          2018-03-31           CREDITS 
TYPE_75          2018-03-31           CREDITS
TYPE_90          2018-03-31           CREDITS
TYPE_100         2018-03-31           CREDITS
MEAN             2018-03-31           CREDITS
TYPE_0           2017-03-31           CREDITS
TYPE_10          2017-03-31           CREDITS  
TYPE_25          2017-03-31           CREDITS
TYPE_50          2017-03-31           CREDITS 
TYPE_75          2017-03-31           CREDITS
TYPE_90          2017-03-31           CREDITS
TYPE_100         2017-03-31           CREDITS
MEAN             2017-03-31           CREDITS
TYPE_0           2016-03-31           CREDITS
TYPE_10          2016-03-31           CREDITS  
TYPE_25          2016-03-31           CREDITS
TYPE_50          2016-03-31           CREDITS 
TYPE_75          2016-03-31           CREDITS
TYPE_90          2016-03-31           CREDITS
TYPE_100         2016-03-31           CREDITS
MEAN             2016-03-31           CREDITS


尝试在 DevCenter 中执行以下查询:


select * from model_vals
where  type='COUNTRY'
and type_code  in (
'TYPE_0',
'TYPE_10',
'TYPE_25',
'TYPE_50',
'TYPE_75',
'TYPE_90',
'TYPE_100',
'MEAN')
and item_code='CREDITS'
and date <='2018-03-31'
order by date desc;

1) 由于“order by”和“in”子句不能一起使用而出现错误。 在 DevCenter 中无法 PAGING OFF,怎么办?

2) 如果必须使用 date

如果没有“2018-03-31”记录,那么它应该获得下一个数据 8 记录,即 2017-03-31 中的所有类型。

如果没有2017-03-31的数据,那么它应该得到下一个数据8条记录,即2016-03-31的所有类型。

怎样才能实现这样的结果查询?

【问题讨论】:

    标签: datastax cassandra-3.0


    【解决方案1】:

    数据排序仅发生在单个分区内,而您在 IN 语句中提供多个分区。对于您的用例,最好不要将多个分区键值与 IN 一起使用,而是对分区键的每个单个值执行多个并行请求,获取数据,然后在您的应用程序中对数据进行排序。

    附:我建议获取some of the courses on DataStax Academy,例如 DS220(数据建模)。

    【讨论】:

      猜你喜欢
      • 2016-09-07
      • 1970-01-01
      • 2017-09-25
      • 2014-02-21
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多