在cassandra中使用Order by子句

 mobiledu2502854827 发布于 2023-01-30 16:51

在cassandra中创建表时,我们可以给出具有如下排序的聚类键.

Create table user(partitionkey int, id int, name varchar, age int, address text, 
   insrt_ts timestamp,
 Primary key(partitionkey, name, insrt_ts, id)
 with clustering order by (name asc, insrt_ts desc, id asc);

当我们将数据插入该表时,根据cassandra文档记录基于聚类键进行排序.

当我使用CQL1和CQL2检索记录时,我得到的是相同的排序顺序.

CQL1:

Select * from user where partitionkey=101;

CQL2:

Select * from user where partitionkey=101 order by name, insrt desc, id;

CQL1和CQL2有什么区别?

1 个回答
  • DataStax建议使用面向查询的数据建模方法,其中结果按查询时所需的顺序存储.此顺序由[复合]主键的分区键和第一个聚类列确定.该条款的DataStax文档ORDER BY解释了这一点:

    查询复合主键和排序结果ORDER BY子句只能选择一个列.该列必须是复合PRIMARY KEY中的第二列.这也适用于主键中包含两个以上列组件的表.排序可以按升序或降序进行,默认升序,并使用ASC或DESC关键字指定.

    在ORDER BY子句中,使用实际名称而不是别名来引用列.

    例如,设置播放列表表,该表使用复合主键,插入示例数据,并使用此查询获取有关按song_order排序的特定播放列表的信息.从Cassandra 1.2开始,您不需要在select表达式中包含ORDER BY列.

    所以基本上你只能通过要求ASCending或DESCending命令来改变它.

    您还可以在DataStax Ac*ademy上查看Apache Cassandra在线课程的(免费)Java开发.我认为第3节提供了关于该ORDER BY条款的模块.

    2023-01-30 16:53 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有