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