データベーススペシャリスト暗記無料で始める

IN述語とは?いんじゅつご

IN述語とは、左辺の値が、括弧内に列挙した値の並びか、副問合せが返す結果集合のいずれかに含まれるかを判定する述語。= ANY と等価で、同じ列に対する複数のORを1つの所属関係として簡潔に書ける。副問合せを伴う形は、最適化の過程で結合や準結合(セミジョイン)へ書き換えて実行されることが多い。

最終更新:2026-10-06

試験情報

データベーススペシャリスト試験の過去問では1問の解説で触れられています。

データベーススペシャリスト試験の頻出用語/午前II

この語が出る過去問を解く →

背景

同じ列への等値比較をORで並べる書き方は、条件が増えるほど読みにくく書き間違えも増える。それ以上に、「別の表に存在する値のどれか」という条件はORでは書き表せず、集合に対する所属という形が必要だった。db試験では、この述語が実行計画上は結合として処理されるという点、つまり書き方と処理のされ方が一対一ではないことを理解しているかが論点になる。

具体例

キャンペーン対象の会員だけを抜くなら WHERE 会員番号 IN (SELECT 会員番号 FROM 対象者表) と書ける。列挙形なら WHERE 予約状態 IN ('仮予約','確定','変更中') となり、ORを3つ並べた式と意味は同じだが読み違えにくい。実行計画を見ると、前者は対象者表を一意化してからハッシュ結合する形へ展開されていることが多い。

試験での引っ掛け

否定形の NOT IN が要注意で、副問合せの結果にNULLが1つでも混じると比較が不定になり、結果が常に空になる。NOT EXISTS へ書き換えるとこの挙動を避けられるため、両者は等価ではない。肯定形のINでは副問合せ側に重複があっても結果に影響しないが、単純に内部結合へ書き換えると行が増えてしまう点も、対応関係として押さえておく。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 1問の解説で触れられる
  • 分野:午前II
  • 否定形の NOT IN が要注意で、副問合せの結果にNULLが1つでも混じると比較が不定になり、結果が常に空になる。