postgresql 用于查找最近更新但未删除的项目的SQL查询

cyvaqqii  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(133)

我有一个结构如下的表:
| 时间|删除指示符| Delete indicator |
| --|--| ------------ |
| 2023-07-26 17:00:00|一个| 1 |
| 2023-07-25 15:00:00| 0个| 0 |
| 2023-07-26 11:00:00| 0个| 0 |
| 2023-07-25 18:00:00|一个| 1 |
| 2023-07-22 10:00:00|一个| 1 |
| 2023-07-26 9:00:00| 0个| 0 |
我想要一个查询,它给我所有的代码,其中有最近更新的记录与删除指标为1。时间可以在所提供的特定范围之间,如7月25日至7月30日。
预期的输出:
| 时间|删除指示符| Delete indicator |
| --|--| ------------ |
| 2023-07-26 17:00:00|一个| 1 |
输出具有时间为2023-07-26 17:00:00的A1,因为它的删除指示符为1。不应考虑较旧记录A2不存在,因为其最近记录2023-07-26 11:00:00的删除指示符为0 A3不存在,因为其最近记录2023-07-26 9:00:00的删除指示符为0,并且7月22日的较旧记录超出范围
尝试按代码分组,但它不起作用,因为我希望输出中包含所有列

yzxexxkh

yzxexxkh1#

这个应该能用

select t1.*
from my_table t1
    left join my_table t2 on t1.Time > t2.Time
where t2.Code is null and t1.deleted = 1

字符串

r7s23pms

r7s23pms2#


的数据
试试这个(两个条目比较):

SELECT p1.* FROM products p1
left join products p2 on p2.code = p1.code
where p1.time > p2.time
and p1.is_deleted = 1;

字符串
试试这个(用于多个条目比较):

select * from products where (code, time) in 
(select code, max(time) from products group by code)
and is_deleted = 1;

相关问题