使用CF:
CREATE TABLE history (
domain text,
iid text,
timeid timeuuid,
data text,
comments text,
PRIMARY KEY (domain, iid, timeid)
);
我想这样查询:
select domain, iid, timeid, data, comments from mappings
where domain = 'a' and iid = 'b' order by timeid desc;
但它失败并出现以下错误(cassandra 1.1.5):
Bad Request: Order by currently only support the ordering of columns following their declared order in the PRIMARY KEY
我做错了吗?可能的解决方法是什么? THX
PS我使用单一的EQ限制和ORDER BY,但我需要至少2个限制并按顺序排序。
答案 0 :(得分:9)
您可以将'order by'列更改为主键中的第二列:
select * from history where domain = 'a' and iid = 'b' order by iid desc;
这有点令人困惑,因为您将iid
限制为相等,但它有效 - 您将按timeid
排序结果。
我认为这是因为iid
和timeid
形成了一个复合列,当您按iid
降序排序时,它会对包括timeid
在内的所有复合列组件进行排序。