IN述語とは?
IN述語とは、左辺の値が、右辺に列挙した値か副問合せの結果集合に含まれるかを判定する述語。= ANY と等価であり、集合との所属関係を簡潔に書ける。副問合せを伴う形は、実行計画では結合や準結合へ書き換えられることが多い。
データベーススペシャリスト試験の過去問では1回出題されています。
いんじゅつご
IN述語の意味
左辺の値が、右辺に列挙した値か副問合せの結果集合に含まれるかを判定する述語。= ANY と等価であり、集合との所属関係を簡潔に書ける。副問合せを伴う形は、実行計画では結合や準結合へ書き換えられることが多い。
IN述語の具体例
WHERE 商品コード IN (SELECT 商品コード FROM 特売表) と書けば、特売対象の受注だけを抽出できる。列挙形の WHERE 部門コード IN ('A1','A2','A3') は、OR を3つ並べるより読みやすい。
IN述語は試験でどう引っ掛けられる?
否定の NOT IN が要注意。副問合せの結果に NULL が1つでも含まれると、比較が不定になり結果が常に空になる。NOT EXISTS で書き換えるとこの罠を避けられ、両者は等価ではない。
IN述語と関連する用語
IN述語が出た過去問
次のSQL文と同じ検索結果が得られるSQL文はどれか。 SELECT DISTINCT TBL1.COL1 FROM TBL1 WHERE COL1 IN (S…
正解:SELECT DISTINCT TBL1.COL1 FROM TBL1 WHERE EXISTS (SELECT * FROM TBL2 WHERE TBL1.COL1 = TBL2.COL1)
要点:IN述語の副問合せは相関EXISTSに等価変換できる
IN述語による副問合せは、外側の行の値が副問合せの結果集合に含まれるかを判定するもので、相関副問合せを使ったEXISTS述語に書き換えられる。どちらもTBL2に同じCOL1の値が1件でもあればその行を残すという意味になり、結果は一致する。
出典:平成28年度 春期 データベーススペシャリスト試験 am2 問9(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。