コンテンツへスキップ
uencoder

SQL の JOIN 種類を正しく使い分ける

INNER、LEFT、RIGHT、FULL、CROSS の各 JOIN は複数テーブルの行を結合します。それぞれを使うべき場面と、よくある落とし穴の回避方法を学びましょう。

  1. 1

    JOIN の種類:INNER (マッチする行のみ)、LEFT (左側の全行 + マッチする右側、非マッチは NULL)、RIGHT (右側の全行 + マッチする左側)、FULL (両方の全行、非マッチは NULL)、CROSS (直積) です。最もよく使われるのは INNER と LEFT です。RIGHT はほとんど使われません (LEFT に書き換え可能)。CROSS は組み合わせの生成に使います。

  2. 2
    SQL フォーマッター →

    JOIN を含むクエリを整形して、結合条件を検証します。ON 句の欠落 (CROSS JOIN を除く) はよくあるエラーです。整形すると結合構造が見えるようになります。どのテーブルが、どの種類で、どんな条件で結合されているか。可読性のため、テーブルには別名を使ってください。

  3. 3

    SQL 整形ワークフローを使って、複数の JOIN を含む複雑なクエリを整形します。別名とインデントが一貫し、結合ロジックが明確になってデバッグしやすくなります。

よくある質問

INNER JOIN と LEFT JOIN の違いは?
INNER JOIN は両方のテーブルでマッチする行だけを返します。LEFT JOIN は左テーブルの全行を返し、右テーブルの非マッチ列は NULL になります。マッチだけが欲しい場合は INNER を、マッチの有無にかかわらず左側の全行が欲しい場合 (例:すべてのユーザーと、あればその注文) は LEFT を使ってください。
3 つ以上のテーブルを結合できますか?
はい。JOIN を連鎖させます:SELECT * FROM a JOIN b ON a.id = b.a_id JOIN c ON b.id = c.b_id。JOIN 1 つごとにテーブルが 1 つ増えます。結合順序はオプティマイザーが決定しますが、先頭に置くテーブルでヒントを出せます。LEFT JOIN には注意してください。NULL の伝播において順序が重要になります。

このタスクを解決するワークフロー

関連ツール