2013-12-16 80 views
9

我使用SQL Server 2012的SQL服務器 - 需要加入其中,但不等於

我知道該怎麼做內部連接這給一個地方有一個匹配。 我還需要獲取不匹配的記錄。

什麼是最好的方法。我想我可以做一個左連接和一個內連接,然後得到那些留下的。想知道最好和最乾淨的方法是什麼。

如上所述,我已經在做內連接,但也需要顯示沒有匹配的記錄。

+0

你有任何代碼可以證明你所嘗試過的嗎? –

+0

是否要包含匹配記錄和不匹配記錄的所有記錄?或者你只想要不匹配的記錄? –

回答

49

您可能正在尋找外連接或外連接。

OUTER JOIN

enter image description here

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

OUTER JOIN除外

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

+0

圖片不見了 –

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 

顯然,這種方式對於任何一個表或其他所有的值將爲空。