LEFT JOINの行数
customers 表と orders 表(図)に対して、次のSQLが返す行数として正しいものを1つ選べ。
SELECT c.id, o.cid FROM customers c LEFT JOIN orders o ON c.id = o.cid;

- A
4行
- B
3行
- C
9行
- D
2行
正解と解説を見る
正解:A
LEFT JOIN は左の表の行をすべて残し、右の表に対応する行が複数あればその数だけ行を作り、なければ右側を NULL にする。顧客1の2行、顧客2の1行、顧客3の NULL の1行で4行になり、左の表の行数のままだと考えると誤る。
| c.id | o.cid |
|---|---|
| 1 | 1 |
| 1 | 1 |
| 2 | 2 |
| 3 | NULL |
- A
正しい。顧客1は注文2件と結びついて2行、顧客2は1行、注文のない顧客3も o.cid が NULL の行として残るので、2 + 1 + 1 = 4行。
- B
誤り。LEFT JOIN の結果は左の表の行数と同じだと考えた誤り(注文のある組だけを返す INNER JOIN も3行)。対応する行が複数あれば、その分だけ行が増える。
- C
誤り。結合条件を使わない直積(3 × 3)の行数。
- D
誤り。注文のある顧客の人数(顧客1と顧客2)を数えている。
このサイトの問題は、各試験の公開されている出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人データサイエンティスト協会・一般財団法人統計質保証推進協会の公式サービスではありません。