カテゴリ: PostgreSQL 更新日: 2026/01/27

PostgreSQLのFROM句サブクエリ完全入門!初心者でもわかる仮想テーブルの考え方

PostgreSQLのFROM句でサブクエリを使う方法
PostgreSQLのFROM句でサブクエリを使う方法

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

生徒

「WHERE句のサブクエリは少し分かってきたんですが、FROM句にもSELECTが書けるって聞いて混乱しました…」

先生

「FROM句のサブクエリは、表をその場で作ってから使うイメージです。紙の名簿をコピーして、必要な部分だけを新しい表にする感じですね。」

生徒

「表を作ってから検索するんですか?」

先生

「そうです。その一時的な表を使って、さらに条件を付けたり表示したりします。」

1. SQLとは何か?

1. SQLとは何か?
1. SQLとは何か?

SQLは、データベースという「表の形で情報を整理して保存する仕組み」を操作するための言葉です。データベースは、紙の名簿や一覧表をパソコンの中に保存したものだと考えると分かりやすくなります。PostgreSQLは、そのSQLを使って操作できる代表的なデータベースで、業務システムや学習用途でも広く使われています。

2. FROM句の基本的な役割

2. FROM句の基本的な役割
2. FROM句の基本的な役割

FROM句は、「どの表を使うか」を指定する場所です。名簿が何冊もある場合に、「今日はこの名簿を使います」と決める作業に似ています。通常はテーブル名を書きますが、ここにサブクエリを書くこともできます。

3. FROM句のサブクエリとは

3. FROM句のサブクエリとは
3. FROM句のサブクエリとは

FROM句のサブクエリは、「一時的に作られる仮の表」です。これを仮想テーブルと呼ぶこともあります。仮想とは「その場限り」という意味で、データベースに保存されるわけではありません。

先に必要なデータだけを集めた表を作り、その表を使って検索や表示を行うのがFROM句サブクエリの考え方です。

4. サンプルテーブルを確認しよう

4. サンプルテーブルを確認しよう
4. サンプルテーブルを確認しよう

まずは、usersテーブルの中身を確認します。これがSQL実行前の状態です。


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋美咲   | 22  | misaki@example.com
5  | 田中健一   | 40  | ken@example.com

5. FROM句にサブクエリを書く基本形

5. FROM句にサブクエリを書く基本形
5. FROM句にサブクエリを書く基本形

FROM句にサブクエリを書くときは、必ず別名を付けます。これは、その場で作った表に名前を付ける作業です。


SELECT *
FROM (
    SELECT id, name, age
    FROM users
) AS temp_users;

このSQLでは、usersテーブルから必要な列だけを取り出し、temp_usersという仮の表を作っています。


id | name       | age
---+------------+-----
1  | 山田太郎   | 25
2  | 佐藤花子   | 19
3  | 鈴木一郎   | 30
4  | 高橋美咲   | 22
5  | 田中健一   | 40

6. 仮想テーブルに条件を付ける

6. 仮想テーブルに条件を付ける
6. 仮想テーブルに条件を付ける

FROM句で作った仮想テーブルは、普通の表と同じように扱えます。次は、二十歳以上の人だけを表示してみます。


SELECT *
FROM (
    SELECT id, name, age
    FROM users
) AS temp_users
WHERE age >= 20;

先に表を作り、その後で条件を指定している点がポイントです。

7. 集計結果をFROM句で使う

7. 集計結果をFROM句で使う
7. 集計結果をFROM句で使う

FROM句サブクエリは、集計結果と組み合わせると便利です。例えば、年齢が三十歳以上の人だけを集めた表を作ることができます。


SELECT name, age
FROM (
    SELECT name, age
    FROM users
    WHERE age >= 30
) AS adult_users;

このように、「条件付きの名簿」を一度作ってから使うことで、SQLの流れが分かりやすくなります。

8. FROM句サブクエリを使うメリット

8. FROM句サブクエリを使うメリット
8. FROM句サブクエリを使うメリット

FROM句でサブクエリを使うと、処理の流れを段階的に考えられるようになります。初心者のうちは、一つのSQLで全てをやろうとせず、「表を作る」「その表を使う」と分けて考えると理解しやすくなります。

PostgreSQLではこの書き方が自然に使えるため、複雑な検索でも読みやすい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の権限管理を完全解説|スキーマ単位で理解するデータベースセキュリティの基礎