如何选择不在我的b表中的记录

时间:2018-01-04 17:29:25

标签: sql postgresql

我有一个包含100k记录的表A和另一个包含500k记录的表B.B应该包含来自A的所有100k记录,并且两个表中都有一个键。如何编写查询来查找A中存在的B中缺失的记录。它不应该列出所有其他不在A中的400k。

3 个答案:

答案 0 :(得分:1)

这应该这样做。

 select * from a 
 left join b on b.id = a.id
 where b.id is null

答案 1 :(得分:0)

如果您关心所有列,可以使用except

select a.*
from a
except
select b.*
from b;

这假设表中的列完全相同,具有兼容类型,并以相同的顺序定义。通常最好明确列出列。

答案 2 :(得分:0)

听起来你可以通过比较一个键/ id来做到这一点。所以你可以使用反左连接,不存在,in或者除外。这是一种应该适合您的方法。

SELECT *
FROM
    TableA a
WHERE
    NOT EXISTS(SELECT 1 FROM TableB b WHERE a.Id = b.Id)