相関副問合せとは?そうかんふくといあわせ
相関副問合せとは、副問合せの中から外側の問合せの列を参照するもので、外側の行1件ごとに副問合せが評価し直される。EXISTS述語と組み合わせて「条件を満たす相手が存在するか」を行ごとに判定する形が典型。非相関の副問合せが1回だけ評価されるのに対し、こちらは外側の行数だけ評価される点が構造上の違いになる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
「各部門で最も給与が高い社員」のように、比較の基準がグループごとに変わる要求は、1本の集計では書けない。基準そのものを行ごとに計算し直す必要があるからである。副問合せの中から外側の値を見られるようにすれば、行ごとに違う条件を1つの文で表せる。試験では、この形とウィンドウ関数や結合による書き換えとの対応、そして評価回数の違いが問われる。
具体例
SELECT \* FROM 社員 S1 WHERE 給与 = (SELECT MAX(給与) FROM 社員 S2 WHERE S2.部門コード = S1.部門コード) と書くと、外側の社員1行ごとに、その社員と同じ部門の最大給与を求めて比較する。
試験での引っ掛け
「グループ内で最新・最古・最大・最小の1件」を取り出す典型パターンで、「自分より条件を満たす行が存在しない」というNOT EXISTSの否定形にも書き換えられる。非相関の副問合せと違い外側の行ごとに評価されるため、内側の参照列に索引が無いと件数の増加に比例して遅くなる。
関連用語
出た過去問
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9(IPA)解説で登場
次の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件でもあればその行を残すという意味になり、結果は一致する。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5(IPA)解説で登場
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問10(IPA)解説で登場
“社員”表から、男女それぞれの最年長社員を除く全ての社員を取り出すSQL文とするために、aに入れる字句はどれか。ここで、“社員”表の構造は次のとおりであり、実線…
正解:SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.性別 = S2.性別
要点:相関副問合せで同性内の最年長を求め、それより後を選ぶ
性別が同じ社員の中で最も早い生年月日を相関副問合せで求め、それより生年月日が後の社員だけを取り出せば、男女それぞれの最年長者が除かれる。外側の行の性別を副問合せの条件に渡す相関が要点である。
出典:令和2年度 10月試験 データベーススペシャリスト試験 午前Ⅱ 問8(IPA)解説で登場
"社員"表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表し、表中のNULLは値が存在しないことを表す。 社員(社員コード(主キ…
正解:S002, S004, S007
要点:NOT EXISTSの相関副問合せで部下を持たない行を抽出
相関副問合せは、外側の行の社員コードを上司として持つ行が存在するかを調べている。NOT EXISTSなのでそれが1件もない社員、すなわち部下を1人も持たない社員が選ばれる。上司列に現れるのはS001・S003・S005・S006なので、残るS002・S004・S007が答えになる。
出典:令和2年度 10月試験 データベーススペシャリスト試験 午前Ⅱ 問10(IPA)解説で登場
"社員"表から、男女それぞれの最年長社員を除く全ての社員を取り出すSQL文とするために、aに入れる字句はどれか。ここで、"社員"表の構造は次のとおりであり、実線…
正解:SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.性別 = S2.性別
要点:相関副問合せで同一グループ内の最小値と比較する
外側の行と同じ性別に限定した相関副問合せで最小の生年月日、すなわちその性別の最年長者の生年月日を求め、それより後に生まれた社員だけを残せば、男女それぞれの最年長者を除いた結果になる。外側の別名S1を副問合せの条件で参照している点が要である。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの3 技術要素 > 3. データ操作 > (2) データベース言語に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。