假设我有以下数据结构
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”,它们Map到一个deal\u id=def的记录?
如果单靠一张table还不能做到这一点,那怎么用两张table呢?按更新日期排序和按日期限制的能力很重要。
1条答案
按热度按时间vaqhlq811#
只能在查询的最后一个群集列上使用范围条件。在您的表设计中,您不能这样做,因为
deal_id
是在update_dt
...您可以尝试将表定义更改为具有如下主键:
在这种情况下,您可以按如下方式进行查询:
或