检查从数据库返回的所有记录,以查看某些记录是否符合条件。如果不是,则过滤掉这些记录

时间:2018-10-08 14:27:50

标签: sql postgresql filter

与我保持联系。对于此处需要的逻辑,我深表歉意,但这就是需要的。

我将从一个简单的数据库查询中返回EVENT表中的所有“事件”。但是,从此我想检查所有记录,看看它们是否符合特定条件。

event_id |   status       |     last_modified
1        |  pending       |     "2018-09-07"
2        |  approved      |     "2018-09-07"
3        |  cancelled     |     "2018-06-02"
4        |  approved      |     "2018-09-02"
5        |  cancelled     |     "2018-10-08"

这只是将要返回的基本数据。但是,鉴于上面的数据,我想返回所有数据,但是如果事件被“取消”并且不在今天之前的36个小时之内[对于本示例来说,今天的时间戳为2018/10/08],则该事件将被排除在外查询返回的记录总数。

在上面返回的记录列表中,鉴于事件#3的最后修改时间不在当前/今天的时间戳记的36小时之内,所以事件3将不会返回。

很抱歉,这是一个非常尴尬的解决方案。我不想在where子句中进行过滤,因为这不会返回所有其他需要的记录。

在此先感谢您提供任何建议。

1 个答案:

答案 0 :(得分:0)

这是您想要的吗?

select e.*
from events e
where e.status <> 'cancelled' or e.last_modified > current_timestamp - interval '36 hour';