如何基于psql中一条记录的值排除具有相同ID的所有行?

时间:2019-04-01 19:45:10

标签: sql postgresql

enter image description here

说我有上面的结果,并想排除ID为14010497的所有行,因为至少其中一行的日期是2/25。我将如何过滤呢?使用WHERE table.end_date > '2019-02-25'仍会包含日期为2-23的行

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

  select * from your_table
  where id not in (
     select distinct id
     from your_table
     where end_date > '2019-02-25'
     )
  /

答案 1 :(得分:1)

我会使用not exists

select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.id = t.id and t2.end_date = '2019-02-25'
                 );

我强烈建议在not exists上使用not in,因为它可以更直观地处理NULL值。如果子查询中的任何值为NOT IN,则NULL将不返回任何行。