我正在使用SQL Server 2012。
我知道如何进行内部连接,以便在有匹配的地方进行连接。 我还需要获取不匹配的记录。
什么是最好的方法。我想我可以做左连接和内连接然后得到 留下的人。想知道最好和最干净的方法是什么。
如前所述,我已经在进行内部联接,但也需要显示没有匹配的记录。
答案 0 :(得分:57)
您可能正在寻找外部联接或外部排除联接。
外部加入
SELECT *
FROM tableA a
FULL OUTER JOIN tableB b
ON a.column = b.column
外部排除加入
SELECT *
FROM tableA a
FULL OUTER JOIN tableB b
ON a.column = a.column
WHERE a.column IS NULL OR b.column IS NULL
本回答中的图表取自这个非常有用的article。
答案 1 :(得分:1)
如果要从两个表中获取值,可以使用完全外连接并获取一边为空的记录:
select a.*, b.* from tableA a
full outer join tableB b on a.col = b.col
where a.col is null or b.col is null
显然,这样一个表或另一个表的所有值都将为空。