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

副問合せとは?ふくといあわせ

副問合せとは、SQL文の内部に書かれた別のSELECT文で、外側の問合せの一部として先に評価される。WHERE句では条件の比較対象として、FROM句では導出表として、SELECT句ではスカラ値として置ける。返す形が1値か1列か表かで、使える述語(比較演算子・IN・EXISTS)が変わる。

最終更新:2026-10-06

試験情報

データベーススペシャリスト試験の過去問では10問の解説で触れられています(2016年度〜2024年度)。

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

別名:サブクエリ、subquery、入れ子問合せ、副問合せ(サブクエリ)、副問い合わせ(サブクエリ)、副問い合わせ

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

背景

「平均より給与が高い社員」のように、条件そのものが問合せの結果に依存する要求は、1つのSELECT文では書けない。集計してから比較するために結果を一時表へ落とす手続き型の書き方では、アプリ側に往復が増えて処理も遅くなる。問合せの中に問合せを入れ子にできるようにすれば、その計算をDBMS側で一度に済ませられる。試験では同じ結果を結合・EXISTS・副問合せのどれでも書けることを前提に、等価な書き換えが問われる。

具体例

SELECT 社員名 FROM 社員 WHERE 部門コード IN (SELECT 部門コード FROM 部門 WHERE 所在地='東京') と書くと、内側が先に東京の部門コードの一覧を作り、外側がそれに含まれる社員だけを返す。PostgreSQLではFROM句に置いた副問合せに別名を付ければ導出表として扱える。

試験での引っ掛け

IN述語による非相関の副問合せは、EXISTSを使った相関副問合せへ等価変換できることが多い。ただしNOT INは副問合せ側にNULLが混ざると結果が0件になるため、NOT EXISTSのほうが安全である。FROM句の副問合せには別名が必須という構文上の決まりも問われる。

関連用語

出た過去問

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

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

試験での特徴
  • 10問の解説で触れられる(2016年度〜2024年度)
  • 分野:午前II
  • IN述語による非相関の副問合せは、EXISTSを使った相関副問合せへ等価変換できることが多い。