Oracle Database SQL(ORACLE MASTER Silver SQL 2019) 無料問題 7 / 10 ・ 分野9: 集合演算子の使用
tab1 表の n 列は 1、2、2、3 の4行、tab2 表の n 列は 2、2、3、4 の4行である。次の SELECT 文が返す行数として正しいものはどれか。 SELECT n FROM tab1 INTERSECT SELECT n FROM tab2;
- 4行:tab1 の全行が返る
- 1行:両方の表に1回ずつ出る値が返る
- 3行:重複を除かず、2、2、3 が返る
- 2行:両方に存在する 2 と 3 が、重複を除いて返る
正解と解説を見る
正解: D
正解の理由
SQL Language Reference の「Set Operators」は、INTERSECT は両方の問合せが選択した、重複を除いた行をすべて返すと定める。tab1 と tab2 の両方にある値は 2 と 3 で、2 は重複を除いて1行になる。返る行は 2 と 3 の2行である。
違う選択肢
「1行:両方の表に1回ずつ出る値が返る」… 1回ずつしか出ない値に限る規則は無い。両方の表に出る値は 2 と 3 の2つで、どちらも返る
「3行:重複を除かず、2、2、3 が返る」… INTERSECT は重複する行を1行にまとめる。2 が重複を除かずに2行返ることはない
「4行:tab1 の全行が返る」… tab1 の全行ではなく、tab2 にも存在する行に絞られる。1 は tab2 に無いので返らない
押さえどころ
INTERSECT は、両方の問合せに存在する行を、重複を除いて返す。片方にしか無い値は返らない。
Oracle Database SQL(ORACLE MASTER Silver SQL 2019)の演習アプリ(無料10問・全問は購入で)へ