ORACLE MASTER Silver SQL 26ai副問合せの行・空集合・組合せオリジナル・公式資料照合難易度★★★☆☆
Oracle AI Database 26aiでdepts(id)は10、20、emp(dept)は20だけを持つ。次のSQLの結果はどれか。NULLはSELECTリストに示したものだけである。 SELECT d.id FROM depts d WHERE EXISTS (SELECT NULL FROM emp e WHERE e.dept=d.id);
A
0行。SELECT NULLなのでEXISTSは常にUNKNOWNになる
EXISTSは値のNULL性ではなく行の存在を調べるので、この推論は当てはまらない。
B
20だけ★ 正解
dept20ではNULLを選択した行が1行存在し、dept10では条件に合う行がない。
C
10と20。SELECTリストが定数なら相関条件を無視する
SELECTリストが定数でもWHEREの相関条件は評価される。
D
10だけ。EXISTSは対応行がない場合にTRUEになる
それはNOT EXISTSに相当する判断であり、EXISTSとは逆である。
解説
EXISTSは副問合せが少なくとも1行返すかを検査する。選択された値がNULLでも、dept20には条件に合う行があるのでTRUEになる。SELECTリストのNULLを比較値として評価するINや等号比較とは違う。
根拠資料・確認情報
対応範囲:ORACLE MASTER Silver SQL 26ai(1Z0-171-JPN)
資料確認日:2026-10-30
同じレッスンの問題
問題 1
Oracle AI Database 26aiでlimits(n NUMBER)は空である。次のA、Bの返す行数の組はどれか。
A: SELECT 1 FROM dual WHERE 5 > ALL(SELECT n FROM limits);
B: SELECT 1 FROM dual WHERE 5 > (SELECT MAX(n) FROM limits);
問題 2
Oracle AI Database 26aiでallowed(a,b)は(1,10)、(2,20)、candidates(id,a,b)は(1,1,20)、(2,2,20)、(3,3,10)だけを持つ。次のSQLが返すidの集合はどれか。NULLはなく、表示順は問わない。
SELECT id FROM candidates WHERE (a,b) IN (SELECT a,b FROM allowed);