如何使用except但从except运算符比较-psql中排除列?

1 postgresql except

我想比较两组列,但从比较中排除一列,因为它永远不会出现在第二个表中,我的结果需要它。所以,解释:

两个表的列:

  • ID (独特的价值,所以我不想比较)
  • amount
  • email
  • date

我想要实现的目标:从表 1 中获取在amountemail和上具有完全相同值的所有事务date。我也希望ID在最终结果集中,但如果我使用except子句进行比较,我的查询将有 0 个结果。

代码:

Select /*ignoreAtComparison*/ t1.ID, t1.amount, t1.email, t1.date from t1

except

Select /*ignoreAtComparison*/ t2.ID, t2.amount, t2.email, t2.date from t2 ;
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

a_h*_*ame 5

except可以重写为not exists查询:

select t1.id, t1.amount, t1.email, t1.date
from t1
where not exists (select 1 
                  from t2
                  where t2.amount = t1.amount
                    and t2.email = t1.email
                    and t2.date = t1.date);
Run Code Online (Sandbox Code Playgroud)

但是你的陈述似乎表明你实际上并不想要,except而是完全不同的东西。