SQL4 択難易度 標準

次の 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;

正答

  1. ann-10, ann-11
  2. ann-10, ann-11, bob-NULL
  3. ann-10, bob-NULL
  4. 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

joinleft-joinnull

この問題を含む SQL のテストを制限時間つきで解く

SQLクイズへ