使用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

我做错了吗?可能的解决方法是什么?
谢谢

附言:我可以使用单个EQ限制和ORDER BY,但是我至少需要2个限制和排序。

最佳答案

您可以在主键中将“排序依据”列更改为第二列:
select * from history where domain = 'a' and iid = 'b' order by iid desc;
这有点令人困惑,因为您用相等的方式限制iid,但是它可以工作-您将得到按timeid排序的结果。

我相信这是因为iidtimeid构成一个复合列,并且当您按iid降序排列时,它会对所有复合列组件(包括timeid)进行排序。

10-08 17:31