共通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エディタを開く