如何在DevCenter中的Cassandra查询中使用带有IN语句的ORDER BY

时间:2019-02-06 07:25:23

标签: datastax cassandra-3.0

在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中分页,怎么办?

2) 如果必须使用日期<='2018-03-31'获取所有type_code的2018记录的记录。即共有8条记录。

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

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

如何实现这种结果查询?

1 个答案:

答案 0 :(得分:1)

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

P.S。我建议使用some of the courses on DataStax Academy,例如DS220(数据建模)。