【いんなーじょいん】
INNER JOIN とは?
最終更新:
💡 条件に合う行の組を取り出す
結合条件が真になる行の組を、テーブルから取り出して組み合わせるSQLの内部結合。一致しない行は残さず、一つの行に複数の相手が一致すれば、その組の数だけ結果ができる。
📌 このページのポイント
INNER JOINって何をするものなの?
条件に合う行の組を、テーブルから取り出すよ。例えば注文の商品IDと商品表のIDが等しい、という条件なら、注文に商品名を付けられる。列名が同じことだけで自動的に結合するわけではないんだ。
商品表に相手がない注文はどうなる?
その注文は結果に含まれないよ。注文1の商品A、注文2の商品Bに対応する商品があれば、それぞれ商品名を付けた行になる。注文3の商品Xに相手がなければ出てこない。一致しない注文も残すならLEFT JOINなどを検討するんだ。
一つの注文は、必ず一行になる?
相手の表に一致する行が一つなら一行だけれど、二つあれば二つの組になるよ。結合先のIDが一意か、意図した一対多の関係かを確かめよう。INNER JOINだけでは重複を取り除かないんだ。
JOINと書くだけでも同じ?
通常の条件付き結合ではINNERを省略できるよ。例えばPostgreSQLのJOIN products ON orders.product_id = products.idはINNER JOINと同じ。ONには等しいという条件だけでなく、範囲などの条件も書けるんだ。
インデックスを付ければ速くなる?
📖 おまけ:英語の意味
「Inner Join」 = 内部結合
💬 一致しない行も残す外部結合に対し、条件に合う行の組だけを返す結合だよ。行の組を作るので、元の行そのものの積集合とは異なるんだ。