17/04/19

句でのサブクエリについて


 

サブクエリとは
サブクエリ(副問い合わせ)とよばれ、SQL文の中に別のクエリを埋め込み、
その結果を条件に評価する方法です。

基本的な構文

SELECT column FROM table WHERE column = (サブクエリ)

評価の順序として、サブクエリが評価されたのち、メインのクエリが評価されます。
またサブクエリの出力が、単一か複数かに気をつける必要があります。
今回はすべて単一です。

SQL環境

create table Schools(id integer, name varchar(100), abolition bit);
insert into Schools(id, name, abolition) values(1, "A学校", 0),(2, "B学校",1);

create table Students(id integer, name varchar(100), school_id int);
insert into Students(id, name, school_id) values(1, "田中",1),(2, "佐藤",2),(3,"加藤", 1);

WHERE句でのサブクエリ

基本的な構文にあるように、サブクエリは主にWHERE句で用いられます。

select * from Students
where school_id = (
    select id from Schools
    where abolition = 0
);

HAVING句でのサブクエリ

group by句でグループした結果をhaving句を使ってさらに条件を指定しています。

select school_id, count(id) from Students
group by school_id
having school_id = (
    select id from Schools where abolition = 0
);

FROM句でのサブクエリ

FROM句で取得した結果をテーブルとして利用します。

select * from (
    select * from Schools 
    where abolition = 0
) as S;

SELECT句でのサブクエリ

SELECT句にサブクエリを指定すると、メインクエリの結果としてサブクエリの結果を取得できます。

select SCH.id,(
    select count(*) from Students as STU
    where SCH.id = STU.school_id
)
from Schools as SCH
group by id;

またサブクエリからメインクエリのFROM句(SCH)のテーブルを参照することを相関サブクエリと呼びます。

コード実行はこちら

 

以上です。

 

参考記事
[SQL] 7. サブクエリ 1 | TECHSCORE(テックスコア)

 

スポンサーリンク

メールアドレスが公開されることはありません。

youya66

だらけとびびり、それとちょっぴりのてきとーさ。

コアラになってだらだらしながら愛されたい。