カテゴリ: PostgreSQL 更新日: 2026/03/19

PostgreSQLのCROSS JOIN完全解説|初心者でもわかる全組み合わせ取得SQL入門

PostgreSQLのCROSS JOINで全組み合わせを取得
PostgreSQLのCROSS JOINで全組み合わせを取得

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

生徒

「PostgreSQLのJOINを勉強しているんですが、CROSS JOINって何をするものなんですか?」

先生

「CROSS JOINは、2つの表にあるデータを、条件を使わずにすべて組み合わせて表示する方法です。全パターンを一覧にしたいときに使います。」

生徒

「条件が無いJOINなんて、イメージしづらいです……」

先生

「名簿Aの全員と、名簿Bの全員を、片っ端から組み合わせて表に書き出すイメージです。パソコンが苦手でも、紙で考えると理解できますよ。」

1. SQLとは何か?

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

SQLは、データベースに保存されている情報を操作するための言語です。データベースとは、たくさんの情報を表の形で整理して保存する箱のようなものです。

例えば、会員名簿、商品一覧、注文履歴などを、行と列で管理します。SQLを使うと、その表の中から必要な情報を取り出したり、複数の表を組み合わせたりできます。

2. JOINの基本的な考え方

2. JOINの基本的な考え方
2. JOINの基本的な考え方

JOINは、複数の表を一つの表のように扱うための仕組みです。多くの場合は「共通の番号」や「同じID」を使って表同士を結びつけます。

INNER JOINやLEFT JOINは「一致する条件」を使いますが、CROSS JOINは条件を使わない、少し特殊なJOINです。

3. CROSS JOINとは何をするものか

3. CROSS JOINとは何をするものか
3. CROSS JOINとは何をするものか

CROSS JOINは、2つの表にある行をすべて組み合わせて表示します。片方の表が3行、もう片方が4行あれば、結果は3×4で12行になります。

これは「直積」とも呼ばれ、全パターンを作りたいときに使われます。初心者の方は「全部掛け算するJOIN」と覚えると分かりやすいです。

4. CROSS JOINの基本構文

4. CROSS JOINの基本構文
4. CROSS JOINの基本構文

PostgreSQLでCROSS JOINを使うときの基本的な書き方はとてもシンプルです。ON句は書きません。


SELECT *
FROM users
CROSS JOIN roles;

このSQLは、usersテーブルとrolesテーブルの全行を組み合わせて表示します。

5. サンプルテーブルで全組み合わせを確認

5. サンプルテーブルで全組み合わせを確認
5. サンプルテーブルで全組み合わせを確認

まずは、2つの表の中身を確認します。


users テーブル
id | name       | age
---+------------+-----
1  | 山田太郎   | 25
2  | 佐藤花子   | 19
3  | 鈴木一郎   | 30

roles テーブル
id | role_name
---+----------
1  | 管理者
2  | 一般

SELECT users.name, roles.role_name
FROM users
CROSS JOIN roles;

name       | role_name
-----------+----------
山田太郎   | 管理者
山田太郎   | 一般
佐藤花子   | 管理者
佐藤花子   | 一般
鈴木一郎   | 管理者
鈴木一郎   | 一般

6. WHERE句とCROSS JOINの組み合わせ

6. WHERE句とCROSS JOINの組み合わせ
6. WHERE句とCROSS JOINの組み合わせ

CROSS JOINは条件なしで結合しますが、後からWHERE句で絞り込むことができます。これにより、全組み合わせを作ってから必要なものだけを選びます。


SELECT users.name, roles.role_name
FROM users
CROSS JOIN roles
WHERE roles.role_name = '管理者';

このSQLでは、全組み合わせの中から「管理者」だけを取り出しています。

7. INNER JOINとの違いを理解する

7. INNER JOINとの違いを理解する
7. INNER JOINとの違いを理解する

INNER JOINは「条件が一致する行だけ」を表示します。一方、CROSS JOINは条件を無視して全行を組み合わせます。

そのため、データ量が多いと結果が一気に増える点に注意が必要です。初心者の方は、行数が増える理由を「掛け算」として考えると混乱しにくくなります。

8. CROSS JOINが使われる場面

8. CROSS JOINが使われる場面
8. CROSS JOINが使われる場面

CROSS JOINは、日付と商品を全組み合わせで表示したい場合や、設定パターンをすべて洗い出したい場合に使われます。

PostgreSQLのJOIN入門として、INNER・LEFT・RIGHT JOINと一緒に理解しておくと、SQLの考え方がぐっと広がります。

カテゴリの一覧へ
新着記事
New1
MySQL
MySQLのGROUP BYと複数カラム指定を完全解説!SQL初心者でもわかるデータのグループ化と集約関数の使い方
New2
PostgreSQL
PostgreSQL入門:NATURAL JOINの仕組みと注意点を初心者向けに徹底解説!
New3
MySQL
MySQLのMAX・MIN関数の使い方を初心者向けに解説!GROUP BYと集約関数で最大値・最小値を取得するSQL入門
New4
PostgreSQL
PostgreSQLのCROSS JOIN完全解説|初心者でもわかる全組み合わせ取得SQL入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLユーザーとロール作成完全ガイド!初心者でもわかるデータベース権限管理
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLでスキーマを分割するメリット
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLのORDER BYの基本(昇順・降順)
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLでよく使うデータ型一覧(文字列・数値・日付)
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLのLIMITで件数を制限する方法
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLのLIKE検索(部分一致・前方一致)
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎