データベース

JOIN

JOINは条件の合う行を結合します。一致しない行を除くか、NULLで補って残すかがJOINの種類によって異なります。

2つのテーブルをJOINするシミュレータ

1. JOINの種類を選択

2. 行を順に照合

学生 s
履修 e
結果

次のステップで学生を1行ずつ確認します。右のベン図は残す範囲を示します。

INNER一致した行のみ
LEFT左の全行+一致
RIGHT右の全行+一致
FULL OUTER両側の全行
一致しない列NULL

OUTER JOINは一致しない行も残します

LEFT JOINは左の全行を残し、右に一致がなければNULLを入れます。未履修の学生を探すには、LEFT JOINの後に WHERE e.student_id IS NULLを指定します。

一致が複数あれば左の行も複製されます。2科目を履修した学生は2行になります。JOIN後のCOUNTが予想より多い場合は、この複製を確認してください。

面接でよく聞かれる点

LEFT JOIN後のWHEREで右側に条件を課すと、NULL行が落ちてINNER JOIN相当になることがあります。左の行を残したければ条件をONに置きます。CROSS JOINの行数はm×nです。