ORACLE MASTER Silver SQL 26ai副問合せの行・空集合・組合せオリジナル・公式資料照合難易度★★★☆☆
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);
A
1と2
列ごとの独立したINへ分解すると1も通るが、指定SQLは同じ行の組合せを照合する。
B
1と2と3
id3のa=3はallowedにも存在せず、複数列の組にも一致しない。
C
空集合
id2の(2,20)はallowedの1行と一致するため返る。
D
2だけ★ 正解
各列を別々に探すのではなく、(2,20)という組全体が対応している。
解説
複数列INは(a,b)の組全体が副問合せの同じ1行に合うかを調べる。id1の(1,20)はaとbが個別には存在しても、allowedの1行の組としては存在しない。対応するのはid2の(2,20)だけである。
根拠資料・確認情報
対応範囲: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);
問題 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);