2

表Aと表Bのすべての値を含むが、それらの間で共通の値を含まないSQL FULLOUTERJOINを作成しようとしています。

私はインターネットを検索し、次のSQLコードに出くわしました。

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableA.id IS null 
OR TableB.id IS null

これは次のように説明できます。

ここに画像の説明を入力してください

IS nullパーツがよくわかりません。次のようなWHERE条件を条件としてSQLを実行できますか?:

WHERE TableA.id <> TableB.id
4

2 に答える 2

2

IS NULL 句について理解していないことは何ですか?

OUTER JOIN (LEFT、RIGHT、FULL) では、外部テーブルの列が NULL になる可能性があります。

条項

WHERE TableA.id IS null 
OR TableB.id IS null

ID の 1 つを NULL にする必要があると言っているだけです。つまり、TableA からの行がある場合、TableB からの一致する行は存在できず、その逆も同様です。

于 2013-02-10T19:48:44.083 に答える
0
SELECT Name, ID FROM TableA UNION SELECT Name, ID FROM TableB 
EXCEPT
SELECT Name, ID FROM TableB INTERSECT SELECT Name, ID FROM TableA 

最初の選択では、テーブルAとテーブルBからすべての行を取得し、これを1つの結果セットに結合します。2番目の選択では、2つの間に共通するすべての行が選択されます。例外は、最初の選択からすべての行を選択することです-2番目の選択からすべての行を選択します。

最終的には、すべての行(2つのテーブル間で共通の行)になります。

于 2013-02-10T19:55:56.483 に答える