サブクエリは、ビューを基本とした技術です。サブクエリの特徴を一言で表わすと、「使い捨てのビュー」です。おまけ的な(SELECT)がサブクエリ。
実際、この SELECT 文は、入れ子構造になっていて、まず FROM 句の中の SELECT 文が実行され、その後に外側の SELECT 文が実行される、という順番になります。
また、サブクエリの階層数には原則的に制限はない(Oracle の Where には最大 255 という制限がある)ので、サブクエリの中の FROM 句に更にサブクエリを使って、その中の FROM 句に更にサブクエリを……というように、いくらでも入れ子を深くすることが可能です。
サンプル
例として以下の社員マスタを使用して副問合せを行います。
社員コード | 社員名 | 給与 |
---|---|---|
00001 | チャーリー・ブラウン | 220000 |
00002 | ルシール・ヴァン・ぺルト | 205000 |
00003 | ライナス・ヴァン・ぺルト | 190000 |
00004 | シュローダー | 200000 |
00005 | ペパーミント・パティ | 300000 |
00006 | マーシー | 230000 |
平均以上の給与を持つ社員を取得します。
SQL
SELECT 社員名, 給与
FROM 社員
WHERE 給与 >= (
SELECT AVG(給与)
FROM 社員
)
結果
社員名 | 給与 |
---|---|
ペパーミント・パティ | 300000 |
マーシー | 230000 |