CREATE TABLE simplex.playlists (
id uuid,
title text,
num int,
album text,
artist text,
song_id uuid,
PRIMARY KEY (id,title,num)
);
SELECT * FROM simplex.playlists where id=2cc9ccb7-6221-4ccb-8387-f22b6a1b354d ORDER BY title DESC;
搜索成功
SELECT * FROM simplex.playlists where id=2cc9ccb7-6221-4ccb-8387-f22b6a1b354d ORDER BY num DESC;
搜索异常Order by currently only support the ordering of columns following their declared order in the PRIMARY KEY
SELECT * FROM simplex.playlists ORDER BY title DESC;
异常:ORDER BY is only supported when the partition key is restricted by an EQ or an IN.
SELECT * FROM simplex.playlists where num=1 ORDER BY title DESC;
异常:PRIMARY KEY part num cannot be restricted (preceding part title is either not restricted or by a non-EQ relation
SELECT * FROM simplex.playlists where title='La Petite Tonkinoise' ORDER BY title DESC;
异常:ORDER BY is only supported when the partition key is restricted by an EQ or an IN.
SELECT * FROM simplex.playlists where id=2cc9ccb7-6221-4ccb-8387-f22b6a1b354d ORDER BY id DESC;
异常:Order by is currently only supported on the clustered columns of the PRIMARY KEY, got id
SELECT * FROM simplex.playlists where title='La Petite Tonkinoise' ORDER BY num DESC;
异常:ORDER BY is only supported when the partition key is restricted by an EQ or an IN.
通过以上实验可以得出cassandra cql order by 字段必须是复合主键的第二个字段,并且需要where后跟上第一个字段的条件判断。
另外:CLUSTERING ORDER
- 官方说明
- if the table has been defined without any specific CLUSTERING ORDER, then then allowed orderings are the order induced by the clustering key and the reverse of that one.
- otherwise, the orderings allowed are the order of the CLUSTERING ORDER option and the reversed one.
用法是 :WITH CLUSTERING ORDER BY( title DESC) 跟在建表语句后面。目的是改变数据存储排序方式
如果有人能找到其他方式可以使用order by请留言给我。在此谢谢了!!