SQL の JOIN の種類と違いまとめ — INNER/LEFT/RIGHT/FULL/CROSS

(2026年7月、内容を全面的に更新)

SQL でテーブルを結合する JOIN には、INNER JOIN・LEFT OUTER JOIN・RIGHT OUTER JOIN・FULL OUTER JOIN・CROSS JOIN の5種類があります。違いは一言でいえば「結合相手が見つからなかった行をどう扱うか」です。INNER は捨てます。LEFT/RIGHT/FULL は残して NULL で埋めます。CROSS はそもそも条件を付けず、全組み合わせを作ります。

答えとしてはこれで全部です。ただ、この一言だけを頼りに書いた SQL は、たいてい「思ったより行が少ない」「NULL の行はどこへ消えた」という形でつまずきます。そこでこの記事では、結合相手のいない行をわざと混ぜたサンプルデータに5種類の JOIN を順にかけて、結果がどう変わるかを目で確認していきます。あわせて結合条件の書き方(ON/USING/NATURAL)の違い、複数 JOIN の評価順、データベースごとの対応差(MySQL に FULL OUTER JOIN がない、など)もまとめます。

続きを読む SQL の JOIN の種類と違いまとめ — INNER/LEFT/RIGHT/FULL/CROSS