共通SQL
EXCEPT (差集合)
1つ目の結果から2つ目の結果を差し引く(標準SQL)
解説
2つの SELECT クエリの結果を比較し、「1つ目のクエリ結果には存在するが、2つ目のクエリ結果には存在しない行」を抽出する集合演算子です。
「全商品マスタの中で、今月一度も注文されていない商品IDの一覧」などを抽出する際に活用されます。
RDBMSごとの方言の違い
- PostgreSQL / SQLite / SQL Server: 標準SQLに準拠した
EXCEPTを使用します。 - Oracle DB: Oracle 19c以前では主に
MINUSを使用します。Oracle 21c以降ではEXCEPTもサポートされています。 - MySQL: MySQL 8.0.31以降で
EXCEPTがサポートされました。それ以前のバージョンではNOT EXISTSやLEFT JOIN ... WHERE key IS NULLで代替するのが一般的でした。
構文
SELECT 列 FROM 表A EXCEPT SELECT 列 FROM 表B;
具体例
SELECT dept_id FROM depts_test EXCEPT SELECT dept_id FROM emps_test;
この構文を実際に書いて試してみませんか?
SQLエディタを開く