我有一个包含数据的表,其主键是非整数(UUID是精确的)。每行还包含插入的时间戳。
我想要做的是查询表并获取按时间戳降序排序的数据但是直到某个主键。
所以,如果我SELECT * FROM data ORDER BY timestamp DESC
,我想摆脱这个结果集中那些在某个主键之后按时间顺序添加的行。
这是否可以在Postgresql 9.4中使用单个查询?
答案 0 :(得分:2)
是的,您只需添加带子查询的where子句,以提取在相关主键之前添加的子句:
SELECT * FROM data WHERE timestamp <= (SELECT timestamp FROM data WHERE id = YOUR_ID) ORDER BY timestamp DESC;
或者,只选择在有问题的PK之后选择的那些记录:
SELECT * FROM data WHERE timestamp >= (SELECT timestamp FROM data WHERE id = YOUR_ID) ORDER BY timestamp DESC;
在两种情况下删除'='以删除在时间戳上包含完全匹配(可能只是主键本身)