サブクエリの基本構文

はじめに

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