次の SQL の結果は?(ann の注文は id 10, 11。bob に注文は無い)
SELECT u.name, o.id AS oidFROM users u LEFT JOIN orders o ON u.id = o.user_idORDER BY u.id, o.id;正答
- ann-10, ann-11
- ann-10, ann-11, bob-NULL
- ann-10, bob-NULL
- ann-10, ann-11, bob-10, bob-11
解説
LEFT JOIN は左側の users の行をすべて残す。ann は注文が 2 件あるので 2 行に増え、bob は注文が無いので 1 行だけ残り、注文側の列 oid は NULL になる。選択肢 1 の bob が消える結果は INNER JOIN の挙動。選択肢 4 のように bob に他人の注文が付くことはなく、ON 条件に一致しない組み合わせは結合されない。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ