IPA公式正解:イ SELECT DISTINCT TBL1.COL1 FROM TBL1
WHERE EXISTS
(SELECT * FROM TBL2 WHERE TBL1.COL1 = TBL2.COL1)
※ 正解はIPA公表の解答です。解説は当サイトが生成AIを用いて作成しています。誤りにお気づきの場合はお問い合わせください。
【解説】正解は選択肢【イ】です。問題のSQL文は「TBL2のCOL1に存在するTBL1のCOL1の値」を重複なく取得します。これは相関副問合せのEXISTS述語を用いて「TBL2にTBL1.COL1と一致する行が存在するTBL1のCOL1」を取得するイと同値です。
【詳細解説】■ 本問の核心・解法のポイント
IN述語を用いた副問合せと、EXISTS述語を用いた相関副問合せの等価性を理解しているかを問う問題です。
提示されたSQL文:
`SELECT DISTINCT TBL1.COL1 FROM TBL1 WHERE COL1 IN (SELECT COL1 FROM TBL2)`
これは、「TBL1のCOL1のうち、TBL2のCOL1の集合に含まれているもの」を重複を除外して取得する文です。
・各選択肢の徹底解説:
・ア:UNIONは和集合を求めるため、TBL1とTBL2の双方のCOL1がすべてマージされて返され、結果が一致しません。
・イ:【選択肢イ★】EXISTS述語による相関副問合せで、TBL1の行ごとに「TBL2に同じCOL1値を持つ行が存在するか」を判定しています。これはIN述語による結合条件と完全に等価な結果を返します。
・ウ:結合条件に`AND TBL1.COL2 = TBL2.COL2`という不要な条件が追加されているため、結果が一致しません。
・エ:LEFT OUTER JOIN(左外部結合)を用いているため、TBL2に一致する行が存在しないTBL1のCOL1も結果に含まれてしまい、誤りです。
よって正解はイです。