SQLServerでSELECTの差を取得する。
tableAとtableBがあり、tableAのみに存在するレコード(行)を抽出したいときに使用する。
差集合なので、A - B のベン図を想像すれば分かりやすい。
(AかつBでない)
SELECT * FROM tableA
EXCEPT
SELECT * FROM tableB
tableAのクエリにあって、tableBのクエリにない個別の値が返される。
反対にすれば、、、
SELECT * FROM tableB
EXCEPT
SELECT * FROM tableA
tableBのクエリにあって、tableAのクエリにない個別の値が返される。
結果の並び順を指定したい場合は ORDER BY 句を最後に指定する。
カラム名は左のクエリを指定する。
SELECT tableID
,tableName
FROM tableB
EXCEPT
SELECT tableID
,tableName
FROM tableA
ORDER BY tableID ASC;
注意点
1.それぞれのクエリの列は同じ数でなければならない。
2.順番も一致していなければならない。
3.データ型が一致していなければならい。
4.暗黙に同じ型に変換可能であること。