我有2个表需要比较才能找到丢失的数据。
表A:定义表
Year, Week, cmp_code, [other columns]
表B:现金收据
Year, WeekNo, FranchiseID
TableA具有我们应具有数据的ID周和年的所有可能组合。 TableB是我们实际拥有的数据。我需要列出我们还没有的东西,所以B-A的三角洲。如何构造查询以查找这些缺失值?
答案 0 :(得分:1)
您可以使用except
集合运算符返回两组之间的差异:
SELECT [Year], [Week], cmp_code FROM TableA
EXCEPT
SELECT [Year], [WeekNo], FranchiseID FROM TableB
这将返回TableA中没有TableB中完全匹配的行。使用相关not exists
查询或left join
可以获得相同的结果。 not exists
应该表现最佳。
答案 1 :(得分:1)
您可以使用NOT EXISTS
SELECT [Year], [Week], ID
FROM TableA AS a
WHERE NOT EXISTS
( SELECT 1
FROM TableB AS b
WHERE b.[Year] = a.[Year]
AND b.[Week] = a.[Week]
AND b.ID = a.ID
);