「受講」表(学生番号, 科目コード)から、科目 'DB' と 'OS' の両方を受講している学生番号を求めたい。SQL 文「SELECT 学生番号 FROM 受講 WHERE 科目コード = 'DB' [ a ] SELECT 学生番号 FROM 受講 WHERE 科目コード = 'OS'」の a に入れるものとして、適切なものはどれか。
選択肢をタップすると、その場で答え合わせできます
正解と解説を見る
正解 CINTERSECT
解説
正解は「INTERSECT」です。INTERSECT は、2つの問合せ結果の両方に含まれる行(共通部分)を返すので、DB を受講した学生と OS を受講した学生の共通部分、つまり両方を受講した学生が得られます。「UNION」は和集合で、DB と OS の少なくとも一方を受講した学生になります。「EXCEPT」は差集合で、DB を受講したが OS は受講していない学生になります。「AND」は2つの SELECT 文をつなぐ演算子として使えず、構文エラーになります。なお、1つの WHERE 句に科目コードが 'DB' かつ 'OS' という条件を書くと、1つの行の値が同時に2つの値になることはないため、結果は常に空になります。
- #SQL
- #集合演算
この調子でOS・ネットワーク・データベースを続けて解く
▶ この科目の連続演習へ進む(10問)