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请留言给我。在此谢谢了!!