サブクエリってなに?
どうやって使うの?
わかりやすく教えて欲しい!
こういった疑問にこたえます。
エンジニアの僕がわかりやすく解説します。
サブクエリとは
サブクエリとは一言で言えば使い捨てのビュー(SELECT文)です。
ビューとは異なり、クエリの実行終了後に消去されます。
ビューとはデータそのものを保存しているわけではなく、SELECT文を保存するという方法で利便性を高めていました。
サブクエリはビュー定義のSELECT文をそのままFROM句に記述したものです。
サブクエリの例を挙げます。
SELECT shohin_bunrui, sum_kakaku
FROM (SELECT shohin_bunrui, SUM(kakaku) AS sum_kakaku
FROM shohin
GROUP BY shohin_bunrui) AS shohin;
このSQLではまずFROM句内のSELECT文から先に実行されます。
実行したSELECT文で得られた結果に対して外側のSELECT文が実行するといった順番になります。
例で示したクエリは2階層でしたが、さらにサブクエリの入れ子の階層を増やすことができます。
ただし、入れ子階層を深くするとパフォーマンスの低下を招くので、あまり階層を深くすることはお勧めしません。
スカラ・サブクエリとは
スカラ・サブクエリとは必ず1行1列だけの戻り値を返すという制限をつけたサブクエリのことです。
要するに「5」や「事務用品」などただ一つの値を返すサブクエリのことです。
返すのが単一の値なのでスカラ・サブクエリの戻り値を「=」や「<」など、スカラ値を入力する比較演算子の入力として利用することができます。
スカラ・サブクエリの例を見てみましょう。
例えば、shohinテーブルという商品データがあったとして、全ての商品の価格の平均より値段が高い商品名と価格を取り出したいとします。
SELECT shohin_mei, kakaku
FROM shohin
WHERE kakaku > (SELECT AVG(kakaku) FROM shohin);
このようにスカラ・サブクエリで全体の平均値を求め、返ってきた平均値とkakakuを比較するということが可能になります。
サブクエリとは?まとめ
解説の内容をまとめます。
- サブクエリとは使い捨てのビュー(SELECT文)
- SELECT文の実行終了後に消去される
- スカラ・サブクエリとは1行1列だけの戻り値を返すサブクエリのこと
以上、お疲れ様でした。
コメント