🧚 お知らせ!Beekeeper Studioは高速でモダンなオープンソースのデータベースGUIです ダウンロード
2025年5月7日 著者:Matthew Rathbone

PostgreSQLのCROSS JOINは、あるテーブルのすべての行を別のテーブルのすべての行と組み合わせ、直積(デカルト積)を作成します。組み合わせの生成、テストデータの作成、2つのデータセットの要素のペアリングなどに便利です。

🔖 クイックリファレンス:すべてのJOINの種類をすぐに確認したいですか?図解とコード例付きのSQL JOINチートシートをご覧ください。

Cross Joinの図解

基本構文

SELECT column1, column2
FROM table1
CROSS JOIN table2;

暗黙的な構文を使うこともできます:

SELECT column1, column2
FROM table1, table2;

例:商品と色の組み合わせ

CROSS JOINの動作を示すために、productsとcolorsという2つのシンプルなテーブルを考えてみましょう。

productsテーブル:

product_id product_name
1 Tシャツ
2 ジーンズ

colorsテーブル:

color_id color_name
1 赤
2 青

商品と色のすべての組み合わせを生成するには:

SELECT product_name, color_name
FROM products
CROSS JOIN colors;

出力結果:

product_name color_name
Tシャツ 赤
Tシャツ 青
ジーンズ 赤
ジーンズ 青

CROSS JOINはすべての商品をすべての色と組み合わせるため、2商品 × 2色 = 合計4通りの組み合わせになります。

主な活用例

すべての組み合わせの生成:サイズと色を組み合わせて商品バリエーションを作成します:

SELECT size, color
FROM sizes CROSS JOIN colors;

テストデータの作成:さまざまなパラメータを組み合わせてテスト用のサンプルデータを生成します:

SELECT strategy, scenario
FROM strategies CROSS JOIN scenarios;

レポートテンプレート:レポートで考えられるすべての組み合わせのプレースホルダー行を作成します。

注意点

パフォーマンス:CROSS JOINは非常に大きな結果セットを生成する可能性があります。1,000行のテーブルと別の1,000行のテーブルをクロス結合すると、1,000,000行になります。

フィルタリング:WHERE句を使って結果を絞り込みます:

SELECT product_name, color_name
FROM products CROSS JOIN colors
WHERE product_name = 'T-Shirt';

まとめ

CROSS JOINは組み合わせやテストデータの生成に便利ですが、パフォーマンスの問題を避けるため、大きなテーブルでは慎重に使いましょう。クエリを実行する前に、必ず結果セットのサイズを考慮してください。

Beekeeper Studioは無料のオープンソースのデータベースGUIです

これまで使った中で最高のSQLクエリ&エディタツールです。データベースの管理に必要なものがすべて揃っています。 - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studioは高速で直感的、そして使いやすいツールです。多数のデータベースに対応し、Windows、Mac、Linuxで快適に動作します。

BeekeeperのLinux版は100%フル機能。手抜きも機能の妥協も一切ありません。

Beekeeper Studio 利用者の声

★★★★★
「Beekeeper Studioは、これまでのSQLワークフローを完全に置き換えました。高速で直感的で、データベース作業が再び楽しくなりました。」
— Alex K.、データベース開発者
★★★★★
「多くのデータベースGUIを試しましたが、Beekeeperは機能とシンプルさのバランスが完璧です。とにかくちゃんと動きます。」
— Sarah M.、フルスタックエンジニア