ORACLE MASTER Silver SQL 26ai副問合せの行・空集合・組合せオリジナル・公式資料照合難易度★★★☆☆
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);
A
Aは1行、Bは0行★ 正解
空集合に対するALLと、NULLを返す集約スカラー副問合せを正しく区別している。
B
AもBも0行
空集合を比較するALLまで、MAXが返すNULLとの比較と同じに扱っている。
C
AもBも1行
BはNULLとの比較がUNKNOWNになるため、WHEREの条件を満たさない。
D
Aは0行、Bは1行
ALLの空集合と、NULLを持つMAXの結果についての判断が逆である。
解説
ALLは空集合のすべての要素に対する比較なので、この場合はTRUEとなりAは1行返る。一方、GROUP BYなしのMAXは空表でもNULLを持つ集約結果1行を返す。5>NULLはUNKNOWNなのでBのWHEREを通らない。
根拠資料・確認情報
対応範囲:ORACLE MASTER Silver SQL 26ai(1Z0-171-JPN)
資料確認日:2026-10-30
同じレッスンの問題
問題 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);
問題 3
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);