ORACLE MASTER Silver SQL 26ai副問合せと集合演算オリジナル・公式資料照合難易度★★★☆☆
Oracle AI Database 26aiのemployees(emp_id, dept_id)に(1,10)、(2,20)、(3,NULL)、blocked(dept_id)に10とNULLだけがある。次は何行返すか。 SELECT emp_id FROM employees WHERE dept_id NOT IN (SELECT dept_id FROM blocked);
A
0行★ 正解
NULLを含むこの単一列NOT INは、どの行についてもWHEREがTRUEになりません。
B
1行。emp_id=2だけ
NULLを単に無視して10だけの除外リストとみなした結果です。NOT INではその扱いにはなりません。
C
2行。emp_id=2と3
NULLの外側行が自動で通過するわけではなく、20の行もリスト内NULLとの比較がTRUEになりません。
D
3行。NULL比較がある場合は条件全体を省略する
UNKNOWNは条件の省略を意味しません。WHEREはTRUEの行だけを採用します。
解説
NOT INは比較がすべて不一致であることを求めます。10は一致があるので除外され、20やNULLもリスト内のNULLとの比較がUNKNOWNとなり、WHEREでTRUEになりません。このデータでは0行です。NULL除外やNOT EXISTSへの変更では、外側のNULLをどう扱いたいかも決める必要があります。
根拠資料・確認情報
対応範囲:Oracle AI Database 26ai SQL Associate(1Z0-171-JPN)
資料確認日:2026-10-29
同じレッスンの問題
問題 2
Oracle AI Database 26aiのbonus(id PRIMARY KEY, amount NUMBER)には(1,10)、(2,20)だけがある。AとBを独立に実行した結果の説明はどれか。
A: SELECT (SELECT amount FROM bonus WHERE id = 99) AS x FROM dual;
B: SELECT (SELECT amount FROM bonus) AS x FROM dual;
問題 3
Oracle AI Database 26aiでa(x NUMBER)の全行は1、1、2、b(x NUMBER)の全行は2、3である。次のU1、U2の結果行数の組はどれか。並び順は問わない。
U1: SELECT x FROM a UNION ALL SELECT x FROM b;
U2: SELECT x FROM a UNION SELECT x FROM b;
問題 4
Oracle AI Database 26aiでa(x NUMBER)は1、1、2、b(x NUMBER)は2、3だけである。次のMとIが返す値の集合の組はどれか。表示順は問わない。
M: SELECT x FROM a MINUS SELECT x FROM b;
I: SELECT x FROM a INTERSECT SELECT x FROM b;