【MySQL】JOINに該当しないデータだけを出力する方法

MySQL

MySQLでJOINに該当しないデータを取得するには、LEFT JOIN もしくは RIGHT JOINWHERE句 を組み合わせて実現できます。

LEFT JOINを使用する例

たとえば、TableATableB という2つのテーブルがあり、TableA には id 列があり、TableB にも同じ id 列があるとします。この2つのテーブルで TableB に一致しない TableA のレコードだけを取得したい場合は、以下のようにします。

SELECT TableA.*
FROM TableA
LEFT JOIN TableB ON TableA.id = TableB.id
WHERE TableB.id IS NULL;
解説
  • LEFT JOIN は、TableA にあるすべてのデータを取得し、TableB の対応するデータがあればそれも一緒に取得しますが、なければNULLを返します。
  • WHERE TableB.id IS NULL を指定することで、TableB に該当しない(NULLになっている)TableA のデータだけを選択できます。

RIGHT JOINを使用する場合

TableB のデータが基準で、TableA に一致しないデータを取得したい場合は、RIGHT JOIN を使います。

SELECT TableB.*
FROM TableA
RIGHT JOIN TableB ON TableA.id = TableB.id
WHERE TableA.id IS NULL;

同じロジックで、TableA に一致しない TableB のレコードだけを取得します。

この方法で、JOINに該当しないデータを効率的に取得することができます。

著者プロフィール
この記事を書いた人
ロジャー

Webアプリ開発を20年近く経験し、管理職なった今も時々ソースをいじるメインは営業職の管理者。もうすぐ40代。最近は、AIを活用して少しでも仕事やプライベートを面白くしていきたいと考えているおっさんです。困った事もAIなら解決してくれるはず!?

ロジャーをフォローする
MySQLシステム開発
ロジャーをフォローする
タイトルとURLをコピーしました