我有下表:
CREATE TABLE records(
device_id text,
read_time timestamp,
data_row text,
PRIMARY KEY (device_id, read_time ))
WITH CLUSTERING ORDER BY (read_time DESC);
我想获取在特定read_time之前从一个记录开始的所有记录。 有没有办法做到这一点? 我以为可能还有另一个字段previous_read_time,但是很难 维护,因为我有时会读取故障。
答案 0 :(得分:1)
我认为没有任何CQL语句可以做到这一点(时间戳列上的过滤器加上第一个与时间过滤器不匹配的记录)。但是根据您的实际情况,也许以下内容对您有用?
例如,我将在2020-05-14 00:00:01
之后找到所有read_time加上2020-05-14 00:00:01
之前或之前的第一个记录:
2020-05-14 00:00:01
)之后的所有记录。SELECT * FROM records WHERE device_id=? AND read_time > '2020-05-14 00:00:01';
2020-05-14 00:00:01
。// Let's say you find records with the following times.
// The earliest (closest to the filter's time) is 2020-05-14 00:00:55
2020-05-14 00:00:55
2020-05-14 00:00:56
2020-05-14 00:30:55
2020-05-14 13:30:55
SELECT * FROM records WHERE device_id=? AND read_time < 2020-05-14 00:00:55 LIMIT 1;