データの検索(副問い合わせの基本)
単一行副問い合わせ
副問い合わせとは、ある結果を抽出するためのSELECT文の中で、さらにSELECT文を使用する検索方法です。
言葉ではわかりにくいので、実際に例を見ていきましょう。
SELECT 列1, 列2 ・・・ FROM テーブル1
WHERE 列1 = (SELECT 列1 FROM テーブル1 WHERE 条件1);
それではサンプルを見てみましょう。
以下のようなteamテーブルがあります。
id | name | hr |
---|---|---|
1 | 荒木 太郎 | 1 |
2 | 井端 次郎 | 4 |
3 | 森野 三郎 | 20 |
4 | 和田 四郎 | 35 |
hr列の値が平均値より大きいデータを抽出するSQLです。
1 2 |
SELECT * FROM team WHERE hr > (SELECT AVG(hr) FROM team); |
上記を実行し、抽出された結果がこちらです。
id | name | hr |
---|---|---|
3 | 森野 三郎 | 20 |
4 | 和田 四郎 | 35 |
hr列の値が平均値より大きいデータが抽出されました。
単一行副問い合わせでは、副問い合わせの結果が1行である必要があります。
また、副問い合わせ結果との比較には「=」「!=」「>=」等、通常のWHERE句同様、各種演算子が使用できます。
以上が、副問い合わせの基本、単一行副問い合わせです。
なお、副問い合わせはWHERE句だけでなく、SELECT句やFROM句にも使用できますので、ぜひ参考にしてみてください。