セルフジョインとは、テーブルをそのテーブル自身と結合することです。階層構造(社員と上司など)や、同じテーブル内の行同士を比較したい場合に役立ちます。
典型例: 社員と上司
text
employees テーブル — manager_id は同じテーブル内の別の employee id を参照する:
id | name | manager_id
1 | Ann | NULL (Ann は上司)
2 | Bob | 1 (Bob の上司は Ann)
3 | Carol | 1 (Carol の上司は Ann)
sql
SELECT
e.name AS employee,
m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;
ここでは employees を 2 つの別名で扱います。
text
e = employee 側の行
m = manager 側の行
実際には同じテーブルですが、別名によって別々のテーブルのように参照できます。
行同士の比較にも使える
sql
SELECT a.id, b.id
FROM products a
JOIN products b
ON a.category_id = b.category_id
AND a.id < b.id;
このように、同じカテゴリ内の商品ペアを作るなど、同一テーブル内の関連行を比較できます。
なぜ重要なのか
セルフジョインは、階層データや同じテーブル内の行同士の関係を扱うための基本的な SQL テクニックです。社員と上司、カテゴリ構造、類似レコードの比較など、現実のデータでは同じテーブル内に関係があるケースが多いため、別名を使ってテーブルを自分自身に結合できることは重要です。
