副問合せ(サブクエリ)とは?
副問合せ(サブクエリ)とは、SELECT文の中に入れ子で書く別のSELECT文。WHERE句の比較対象、FROM句の導出表、SELECT句の値として使える。返す結果が1値か1列複数行かで使える演算子が変わる。FEでは、内側から順に評価される実行順序を追えるかが問われる。
情報処理安全確保支援士試験の過去問では1回出題されています。
ふくといあわせ
副問合せ(サブクエリ)の意味
SELECT文の中に入れ子で書く別のSELECT文。WHERE句の比較対象、FROM句の導出表、SELECT句の値として使える。返す結果が1値か1列複数行かで使える演算子が変わる。FEでは、内側から順に評価される実行順序を追えるかが問われる。
副問合せ(サブクエリ)の具体例
「SELECT 氏名 FROM 社員 WHERE 給与 >(SELECT AVG(給与) FROM 社員)」は、内側で平均給与という1つの値を求め、それを外側の比較に使う。複数行が返る場合は「IN」や「> ALL」「> ANY」で受ける必要がある。
副問合せ(サブクエリ)は試験でどう引っ掛けられる?
複数行を返す副問合せを「=」で受けると実行時エラーになる。IN・ANY・ALLの使い分けが必要。また副問合せの結果が0行のとき、INは偽になるがNOT INはNULLが混ざると期待どおりにならない点も要注意。
副問合せ(サブクエリ)と関連する用語
副問合せ(サブクエリ)が出た過去問
“従業員”表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表し、表中のNULLは値が存在しないことを表す。 〔SQL文〕 SEL…
正解:S002, S004, S007
要点:NOT EXISTSの相関副問合せは部下を持たない行を抽出する
このSQLは、相関副問合せで「自分の従業員コードを上司として持つ行が存在しない」従業員、すなわち部下を一人も持たない従業員を抽出します。表では上司欄にS001・S003・S005・S006が現れるので、これらは部下を持つ従業員です。残るS002・S004・S007が誰の上司にもなっていないため、これらが結果として得られます。
出典:令和7年度 春期 情報処理安全確保支援士試験 am2 問21(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。