Query Go
左側を残して結合 - LEFT OUTER JOIN の使い方・オプション・サンプル

左側を残して結合 - LEFT OUTER JOIN

左テーブルを基準に、右側に一致行がなければ NULL で埋めて返す結合

概念図

LEFT OUTER JOIN diagram

構文

sql
SELECTFROM A LEFT JOIN B ON A.key = B.key

サンプル

注文の有無に関わらず全ユーザーを取得(注文がなければ amount は NULL)

sql
SELECT u.name, o.amount
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;

LEFT OUTER JOIN とは

LEFT JOIN は 左テーブルを基準に、右テーブルに一致する行があれば結合し、なければ右側を NULL で埋めて返します。「左側は必ず残す」結合です。

「OUTER」は省略可能で、LEFT JOIN と書けば LEFT OUTER JOIN を意味します。

「未マッチを抽出」する定石

右側にマッチがない行だけを取り出したいときは LEFT JOIN ... WHERE B.key IS NULL が定石です(アンチジョイン)。「注文がないユーザー」「親 ID に対応する子レコードがないもの」を抽出するのに使います。

sql
-- 注文がないユーザーを抽出
SELECT u.*
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;

関連トピック