2013-12-16 10 views
9

私はSQL Server 2012を使用しています。SQL Server - 結合が必要ですが、等しくない場所

私はマッチする場所を与える内部結合を行う方法を知っています。 また、一致しなかったレコードを取得する必要があります。

最良のアプローチは何ですか。私は左の結合と内部の結合を行い、その後残されているものを にすることができると思います。最高でクリーンなアプローチが何であるか疑問に思う。

すでに述べたように、私はすでに内部結合を行っていますが、マッチしなかったレコードも表示する必要があります。

+0

あなたが試したことを示すコードはありますか? –

+0

一致するレコードと一致しないレコードを含むすべてのレコードが必要ですか。または、一致しないレコードのみを検索したいですか? –

答えて

49

おそらく、外部結合または外部除外結合を探しているとします。

OUTERは

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

OUTER JOIN EXCLUDINGは

enter image description here 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 

このように一つのテーブルまたは他のいずれかのすべての値nullになります。