我有一个内部联接的SQL Server查询...
SELECT *
FROM tableA
INNER JOIN tableB on tableA.my_id = tableB.my_id
如何找到此联接中不匹配的所有记录?
答案 0 :(得分:3)
您可以使用FULL JOIN组合这两个表,然后使用WHERE子句通过检查每个表主键值中的NULL来将结果过滤到只有不匹配的行。
完全外部联接包括所有联接表中的所有行,无论它们是否匹配。
SELECT a.pk, b.pk
FROM tableA a
FULL JOIN tableB b ON a.pk=b.fk
WHERE
a.pk IS NULL
OR b.pk IS NULL
答案 1 :(得分:0)
SELECT A2.* FROM TableA A2
WHERE A2.my_id NOT IN
(Select tableA.my_id FROM
tableA
inner join
tableB
on tableA.my_id = tableB.my_id)
您可以类似地执行上述开始SELECT B2.* FROM TableB B2
,以便单独查询表B中不匹配的记录
答案 2 :(得分:0)
SELECT * FROM tableA其中my_id NOT IN(从tableB中选择my_id)
UNION ALL
SELECT * FROM tableB其中my_id NOT IN(从tableA中选择my_id)