最終更新日:2026年8月16日
ds data-processing sql
DS検定トップ
> 自己結合とは?同じテーブルを結合する理由を理解する【DS検定】
まず結論
自己結合(Self Join)とは、同じテーブルに別名を付けて、そのテーブル同士をJOINする方法です。
DS検定では、同じテーブル内の別の行を対応づけたいときに使うと理解できれば十分です。
直感的な説明
例えば社員テーブルに「上司ID」はあるものの、「上司の名前」はないとします。
| 社員ID | 名前 | 上司ID |
|---|---|---|
| 1 | 田中 | 3 |
| 2 | 鈴木 | 3 |
| 3 | 山本 | NULL |
この表だけでは、上司ID = 3 が山本さんだと直接表示できません。
そこで同じ社員テーブルを、
- 社員として見るテーブル
- 上司として見るテーブル
の2つに見立てて結合します。
結果は次のようになります。
| 社員 | 上司 |
|---|---|
| 田中 | 山本 |
| 鈴木 | 山本 |
| 山本 | NULL |
定義・仕組み
自己結合は、同じテーブルに異なるエイリアスを付けて通常のJOINを行います。
SELECT
e1.name AS 社員,
e2.name AS 上司
FROM employees e1
LEFT JOIN employees e2
ON e1.manager_id = e2.employee_id;
ここでは、
e1→ 社員として見るemployeese2→ 上司として見るemployees
です。
同じテーブルを役割別に2回使うのがポイントです。
どんな場面で使う?
自己結合は、同一テーブル内の行同士に関係があるときに使います。
- 社員と上司
- 親カテゴリと子カテゴリ
- 組織ツリー
- 前日と当日のデータ比較
よくある誤解・混同
❌ 自己結合は特別なJOIN構文
特別なSQL構文ではありません。同じテーブルをエイリアスで分けて通常のJOINを行うだけです。
❌ 同じテーブル同士はJOINできない
エイリアスを付ければ別の役割として扱えるため、問題なくJOINできます。
❌ 自己結合は親子関係だけに使う
親子関係は代表例ですが、同一テーブル内の別行を対応づける場面全般で使えます。
まとめ(試験直前用)
- 自己結合 = 同じテーブルを2回使ってJOIN
- エイリアスで役割を分ける
- 社員と上司などの関係でよく使う
- 特別なJOIN構文ではない
DS検定では、「同じテーブル内の別行を対応づける」なら自己結合と判断しましょう。
対応スキル項目(データエンジニアリング力シート)
- データ操作
- SQL
- ★ 同一テーブルを別名で結合して関係を取り出せる
🔗 関連記事
- バッチ処理とストリーム処理の違いとは?リアルタイム性で切り分ける【DS検定】
- データトランスフォーメーションとは?(非構造化データの変換)【DS検定】
- ビューとは?元の表との違い・SELECT権限・更新可能ビュー【基本情報技術者試験】
- Dockerとは?再現性が出る理由を整理【DS検定】
- ETLとは?(データ統合の基本プロセス)【DS検定リテラシー】