17/04/27

キーワード付きのサブクエリについて


 

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

 

今回はキーワード付きのサブクエリを使うので、
サブクエリの結果が複数の処理になります。
前回の記事句でのサブクエリについて

基本的な構文

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

評価の順序として、サブクエリが評価されたのち、メインのクエリが評価されます。

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);

IN

サブクエリが返すデータの値に等しい場合に条件式がTRUEになります。

select id, name from Students
where school_id in (
    select id from Schools
    where id = 2
);

ANY

サブクエリが返す複数のデータと比較を行い、どれかの値との比較がTRUEなら条件式がTRUEになります。

select id, name from Students
where school_id = any (select id from Schools);

ALL

サブクエリが返す複数のデータと比較を行い、すべての比較がTRUEなら条件式がTRUEになります。

select id, name from Schools
where 1 <= all (select id from Students);

EXISTS

サブクエリがデータを返すかどうかだけを判断します。
サブクエリがデータを返したら条件式はTRUE、そうじゃないなら条件式はFALSEになります。
サブクエリで取得したデータを何かと比較するということは行いません。

select * from Students
where exists (select school_id, count(*) from Students group by school_id having count(*) >= 3);

ソースコード

以上です。

 

参考記事
データの取得 – MySQLの使い方

 

スポンサーリンク

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

youya66

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

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