鉴于我具有以下数据结构
CREATE TABLE db(
year int,
day int,
deal_id text,
update_dt timestamp,
codes set<text>,
payload text,
PRIMARY KEY ((year, day), update_dt, deal_id)
) WITH CLUSTERING ORDER BY (update_dt DESC);
其中包含以下数据
year | day | update_dt | deal_id | codes | payload
------+-----+---------------------------------+---------+-----------------+--------------
2018 | 231 | 2018-10-30 11:21:59.001000+0000 | abc | {'a', 'c'} | Hi 2 there
2018 | 231 | 2018-10-30 11:21:59.001000+0000 | abcd | {'a', 'c'} | Hi 2 there 3
2018 | 231 | 2018-10-30 11:21:59.001000+0000 | abcde | {'a', 'c'} | Hi 2 there 3
2018 | 231 | 2018-10-30 11:21:59.001000+0000 | abcdef | {'a', 'c', 'e'} | Hi 2 there 3
有什么办法可以限制
的结果?select * from db where year=2018 and day=231 and update_dt < '2018-10-31T11:21:59.001+0000';
因此,我只显示具有某些代码的代码,例如“ a”和“ e”,它们映射到具有Deal_id = abcdef的一条记录?
如果仅靠一张桌子不能做到这一点,那么用两张桌子怎么办?按更新日期排序并具有按日期限制的功能很重要。
答案 0 :(得分:0)
您可能仅在查询的最后一个聚类列上具有范围条件。在表格设计中,您无法执行此操作,因为deal_id
在update_dt
之后...
您可以尝试将表定义更改为具有以下主键:
PRIMARY KEY ((year, day), deal_id, update_dt)
在这种情况下,您可以像这样查询:
select * from db where year=2018 and day=231 and deal_id = 'abc'
and update_dt < '2018-10-31T11:21:59.001+0000';
或
select * from db where year=2018 and day=231 and deal_id in ('abc', 'def')
and update_dt < '2018-10-31T11:21:59.001+0000';