カテゴリ: MySQL 更新日: 2026/01/24

MySQLサブクエリとは何かを完全解説!初心者でもわかるSQLの基本

MySQLのサブクエリとは?基本を解説
MySQLのサブクエリとは?基本を解説

先生と生徒の会話形式で理解しよう

生徒

「MySQLの勉強を始めたんですが、サブクエリって言葉が出てきて急に難しく感じました」

先生

「サブクエリは、SQLの中にさらにSQLを書く仕組みです。紙の名簿を見ながら、別の紙で条件を考えるようなイメージですよ」

生徒

「SQLの中にSQLを書くんですか?パソコンを触ったことがなくても理解できますか?」

先生

「大丈夫です。難しい言葉は使わずに、名簿や表を使って一つずつ説明します」

1. MySQLのサブクエリとは何か?

1. MySQLのサブクエリとは何か?
1. MySQLのサブクエリとは何か?

MySQLのサブクエリとは、SQL文の中に書かれる「小さなSQL文」のことです。 SQLはデータベースという「情報を表の形で保存する箱」を操作するための言葉ですが、 サブクエリは「先に調べた結果を使って、もう一度調べる」ための仕組みになります。

例えば、学校の名簿を思い浮かべてください。 まず「20歳未満の人だけを書き出す」という作業をして、 その結果を見ながら「その人たちの名前だけを見る」という二段階の作業をします。 この「先に調べる作業」がサブクエリです。

サブクエリは、SELECT文の中に丸かっこ「( )」で書きます。 見た目は少し複雑に見えますが、やっていることはとても単純です。

2. サブクエリを使わない場合の基本SQL

2. サブクエリを使わない場合の基本SQL
2. サブクエリを使わない場合の基本SQL

まずは、サブクエリを使わない普通のSQLを確認しましょう。 以下は、ユーザー情報を保存したテーブルです。


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 18  | jiro@example.com

この表から「20歳未満の人」を探すSQLは次のようになります。


SELECT *
FROM users
WHERE age < 20;

このSQLは、「usersという表から、年齢が20より小さい行をすべて取り出す」 という意味です。条件が一つだけなので、とても分かりやすいですね。


id | name       | age | email
---+------------+-----+-------------------
2  | 佐藤花子   | 19  | hanako@example.com
4  | 高橋次郎   | 18  | jiro@example.com

3. サブクエリが必要になる場面とは

3. サブクエリが必要になる場面とは
3. サブクエリが必要になる場面とは

では、なぜサブクエリが必要になるのでしょうか。 それは「条件を先に調べないと、次の条件が決められない」ときです。

例えば、「平均年齢より若い人を調べたい」と言われた場合、 まず全員の平均年齢を計算しなければいけません。 この「平均年齢を計算するSQL」がサブクエリになります。

4. MySQLのサブクエリの基本例

4. MySQLのサブクエリの基本例
4. MySQLのサブクエリの基本例

実際にサブクエリを使ったSQLを見てみましょう。 まずはテーブルの状態です。


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 18  | jiro@example.com

平均年齢より若い人を調べるSQLは、次のようになります。


SELECT *
FROM users
WHERE age < (
    SELECT AVG(age)
    FROM users
);

内側のSELECT文がサブクエリです。 この部分で平均年齢を計算し、その結果を使って外側のSQLが条件判断をしています。


id | name       | age | email
---+------------+-----+-------------------
2  | 佐藤花子   | 19  | hanako@example.com
4  | 高橋次郎   | 18  | jiro@example.com

5. サブクエリは「先に答えを作る仕組み」

5. サブクエリは「先に答えを作る仕組み」
5. サブクエリは「先に答えを作る仕組み」

サブクエリは難しく見えますが、本質はとてもシンプルです。 「先に小さな答えを作って、それを材料にして次の検索をする」 ただそれだけです。

紙の名簿で考えると、 「条件に合う人だけを別紙に書き出す」 「その別紙を見ながら、さらに調べる」 という作業と同じです。

MySQLのサブクエリは、データが増えても同じ考え方で使えます。 初心者の方は、まず「SQLの中にSQLがある」という形に慣れることが大切です。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New2
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New3
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
New4
MySQL
MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLの権限管理を完全解説|スキーマ単位で理解するデータベースセキュリティの基礎