如果它包含昨天的值,则返回

时间:2018-04-11 17:10:20

标签: sql postgresql

我有下表

id  bigint  
phone_number    text
account_id  bigint
used    boolean
insert_timestamp    timestamptz

如果used = false并且account_id的ID包含至少一个从昨天或更早的时间插入的ID,我想获得结果。

例如我们有以下行

 id     phone_numberaccount_id  used    insert_timestamp
 7292   16360000000 1093630     f       2018-04-10 12:48:17.700558-04
 7293   16360000000 1093630     f       2018-04-10 12:48:17.700558-04
 7294   16360000000 1093630     f       2018-04-10 12:48:17.700558-04
 7295   16360000000 1093630     f       2018-04-11 12:48:17.700558-04
 7296   16360000000 1093631     f       2018-04-11 12:48:17.700558-04

查询应该返回7292,7293,7294和7295而不是7296,因为昨天没有一个账号为1093631的

1 个答案:

答案 0 :(得分:1)

您可以使用:

SELECT *
FROM tab
WHERE account_id IN (SELECT account_id
                     FROM tab
                     WHERE inserted_timestamp < now()::date
                    AND used = false);