self-join은 테이블을 자기 자신과 join하는 것입니다 — 테이블의 행이 같은 테이블의 다른 행과 연관될 때 유용합니다. 계층 구조(직원과 그들의 관리자)나 테이블 내 행 비교 등에 쓰입니다.
고전적인 예: 직원과 관리자
employees 테이블 — manager_id가 (같은 테이블의) 다른 직원의 id를 참조함:
id | name | manager_id
1 | Ann | NULL (Ann이 최고 책임자)
2 | Bob | 1 (Bob의 관리자는 Ann)
3 | Carol | 1 (Carol의 관리자는 Ann)
e.name employee, m.name manager
employees e
employees m e.manager_id m.id;
