2024.07.04(更新日: 2024.09.26)
サブクエリの基本構文
はじめに
progateでSQLのサブクエリを学習していて、あまり理解できていない気がしたので、記事を書いていく。
サブクエリの基本構文
SELECT 列名
FROM テーブル名
WHERE 列名 演算子 (
SELECT 列名
FROM テーブル名
);
【SQL】サブクエリ(where句) #SQL – Qiita
サブクエリは、SELECTなどの句でも使えるみたいだ。
しかし、まずはWHERE句で使う方法をマスターしたい。
ネットで調べた情報は網羅的にまとまっている一方、情報量が多すぎて、処理しきれない。
一つ一つ理解していきたい。
「こぼれ落ちていくようなたくさん」ではなく、「ひとつ」でいい。
売上金額が平均売上金額より高い顧客を抽出したいとき
SELECT customer_name, sales_amount
FROM customers
WHERE sales_amount > (SELECT AVG(sales_amount) FROM customers);
SQLのサブクエリ(副問合せ)を初心者向けに解説します – TECH PLAY Magazine
売り上げ金額 = sales_amount
平均売上金額 = AVG(sales_amount)
()内がサブクエリ。
customersテーブルから、sales_amountカラムの平均を選択している。
AVG(sales_amount)だけでもいい気がする。
しかし、他のたとえば、campaniesテーブルにもsales_amountカラムがあった場合、エラーになってしまう。
コンピュータは、「おバカで従順」なので、言われてないことを察して行ってくれるわけではない。
こちらの行間を読むことはできないが、指示通りに必ず動いてくれる。
自分の意図した結果が得られなかったとしたら、自分に原因がある。
自分を変える必要がある。
少々話が脱線したが、AVG(sales_amount)ではなく、「SELECT AVG(sales_amount) FROM customers」というように、具体的にコンピュータ君に指示してあげよう。
サブクエリ内は末尾に;が不要
サブリクエリ内の末尾には、;を書かない。
サブクエリの基本構文を、もう一度確認してもらうと分かる。
SELECT 列名
FROM テーブル名
WHERE 列名 演算子 (
SELECT 列名
FROM テーブル名
);
投稿ID : 22683
コメントを残す