EXCEPT 句とは
EXCEPT句は、2 つのクエリの結果セットを比較し、左側のクエリの結果から右側のクエリの結果を差し引く操作を行います。つまり、2 つの結果セットの差分を求める際に利用されます。EXCEPT句は、セット(集合)としての考え方に基づいており、重複する行を自動的に削除してくれます。
使い方
EXCEPT句の基本的な構文は以下の通りです。
SELECT 列1, 列2, ...
FROM テーブル1
WHERE 条件1
EXCEPT
SELECT 列1, 列2, ...
FROM テーブル2
WHERE 条件2;
この構文では、テーブル1から取得された結果セットから、テーブル2から取得された結果セットを差し引いています。重要な点として、EXCEPT句の前後の 2 つのクエリは同じ列の数と型を持っている必要があります。
具体例
例を通じてEXCEPT句の使い方を理解しましょう。以下は、従業員テーブルとマネージャーテーブルがある場合の例です。
-- マネージャーがいる従業員
SELECT EmployeeID
FROM Employee
WHERE ManagerID IS NOT NULL
EXCEPT
-- マネージャーテーブルのマネージャー
SELECT ManagerID
FROM Manager;
この例では、Employeeテーブルからマネージャーがいる従業員の一覧から、Managerテーブルのマネージャーの一覧を差し引いています。結果として、マネージャーではない従業員の一覧が得られます。
注意点
EXCEPT句は左側のクエリの結果から右側のクエリの結果を差し引くため、左側にしか存在しないデータが残ります。- 列の数やデータ型が一致しない場合、エラーが発生します。
EXCEPTはセット演算子なので、重複した行は 1 度だけ結果に含まれます。
まとめ
EXCEPT句は、2 つの結果セットの差分を求める際に非常に便利な SQL の機能です。セットとしての操作を理解し、データの比較や差分抽出に活用してみてください。