PR

[SQL]片方のテーブルにしか存在しないデータの抽出方法

SQL

今回はSQLでAテーブルに存在して、Bテーブルには存在しないデータを抽出する方法を2通り紹介したいと思います。

OUTER JOIN(外部結合)を使う

1つ目は、OUTER JOIN を使います。

JOIN したデータを、WHERE でBテーブルに存在しないデータを残します。

SELECT
  *
FROM
  Aテーブル
LEFT OUTER JOIN
  Bテーブル
ON
  Aテーブル.キー = Bテーブル.キー
WHERE
  Bテーブル.キー IS NULL

NOT EXISTSを使う

2つ目は、NOT EXISTS を使います。

AテーブルからBテーブルに存在するデータを落とします。

SELECT
  *
FROM
  Aテーブル
WHERE
  NOT EXISTS (
    SELECT
      *
    FROM
      Bテーブル
    WHERE
      Aテーブル.キー = Bテーブル.キー
  )

コメント

タイトルとURLをコピーしました