• 자기 자신을 조인하는 JOIN
• 같은 테이블의 행(레코드) 간의 관계를 비교하거나 연결할 때 사용
• 주로 부모-자식 관계, 동료 관계, 상하 관계를 표현할 때 사용
즉, 같은 테이블을 두 번 불러와서 별칭(alias)을 붙여 JOIN하는 방식
SELECT ...
FROM table_name A
JOIN table_name B ON A.some_column = B.some_column
• A, B는 같은 테이블의 다른 역할
• 서로 다른 의미의 행을 비교하기 위해 alias(별칭) 을 붙이는 것이 핵심
CREATE TABLE employees (
id INT,
name VARCHAR(50),
manager_id INT
);
id name manager_id
1 CEO NULL
2 A 1
3 B 1
4 C 2
5 D 2
6 E 3
SELECT
e.name AS employee_name,
m.name AS manager_name
FROM employees e
LEFT JOIN employees m
ON e.manager_id = m.id;
employee_name manager_name
CEO NULL
A CEO
B CEO
C A
D A
E B
• RECURSIVE CTE 내부에서도 결국 자기 자신과 JOIN하는 구조이므로
Self-Join을 이해하는 것이 Recursive 구조 이해의 기초가 됨