【初心者用】SQL サブクエリについてまとめてみた

公開日: 2022/6/16 更新日: 2022/6/16
SQLのサブクエリ(副問い合わせ)について今回色々操作をしていく。

サブクエリを活用できることで、SQLの活用の幅が広がり、複雑なクエリを記述することができるため、少しずつ慣れていこう。


参考サイト

https://style.potepan.com/articles/17593.html
SQLの幅問い合わせ(サブクエリ)とは? 概要・種類・使い方を解説

https://hironimo.com/prog/sql/subquery/
SQLServer 副問い合わせ

1. サブクエリとは?

では実際にサブクエリを操作してみる。

今回も復習をかねて新しいテーブルを作成する

product2テーブルを作成

create table product2 (id int(10), name varchar(20));

データを追加する

insert into product2 values (1, '作業用PC'), (2, 'A4ノート'), (3, 'バインダー'), (4, 'タブレット');



amountテーブルを作成

create table amount (product_id int(10), count int(10));

データを追加する

insert into amount values (3,15), (5, 20), (5, 10), (4, 13);



amountテーブル作成

idが重複しているため、idを更新する

更新するためには UPDATE文を利用する

構文

UPDATE [テーブル名] SET [更新する内容] WHERE [条件式];

count = 20のフィールドの product_id を 2に更新する

update amount set product_id = 2 where count = 20;



product_id を更新することができた

product_id = 5 のデータも 1に更新する

update amount set product_id = 1 where count = 10;



これで全ての更新は完了した

ではここから実際にサブクエリを使って、countが一番少ないデータを取得してみる

product2テーブル



amountテーブル



select * from product2 where id = (select product_id from amount order by count asc limit 1);



amountテーブルでは、 id = 1の count が 10で一番少ないため サブクエリを利用して、countが一番少ないデータを取得することができた。


サブクエリの結果が複数の場合

新しいテーブルを作成する

criantテーブルを作成

create table criant (id int(10), name varchar(20), menu_id int(10));

データを追加する

insert into criant (id, name, menu_id) values (1, '鈴木一郎', 1), (2, '佐藤花子', 3), (3, '織田五郎', 5), (4, '平山一雄', 2);

2. まとめ

サブクエリを使うと、複雑な処理も1つのSQLで記述できるメリットがある。

使い方が結構難しいが、少しずつ慣れていこう。