SQL Server - 需要加入但不等于

时间:2013-12-16 03:09:09

标签: sql-server tsql

我正在使用SQL Server 2012。

我知道如何进行内部连接,以便在有匹配的地方进行连接。 我还需要获取不匹配的记录。

什么是最好的方法。我想我可以做左连接和内连接然后得到 留下的人。想知道最好和最干净的方法是什么。

如前所述,我已经在进行内部联接,但也需要显示没有匹配的记录。

2 个答案:

答案 0 :(得分:57)

您可能正在寻找外部联接或外部排除联接。

外部加入

enter image description here

SELECT *
FROM tableA a
FULL OUTER JOIN tableB b
    ON a.column = b.column

外部排除加入

enter image description here

SELECT *
FROM tableA a
FULL OUTER JOIN tableB b
    ON a.column = a.column
WHERE a.column IS NULL OR b.column IS NULL

sql joins

本回答中的图表取自这个非常有用的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

显然,这样一个表或另一个表的所有值都将为空。