自连接同一张表要点
- 同一张表要起两个别名(如 e 和 m)才能区分左右
- 自连接本质还是 JOIN,只是左右两边是同一张物理表
- 常见结构:子行.manager_id = 父行.emp_id
- 查「下级姓名 + 上级姓名」是经典自连接题
- 想保留没有上级的顶层节点,用 LEFT JOIN 自连
- 层级很深时自连接只取一层,多层要用递归 CTE
自连接同一张表示例
-- 员工表自带上级:emp_id / emp_name / manager_id
SELECT e.emp_name, m.emp_name AS manager_name
FROM employee e
LEFT JOIN employee m ON e.manager_id = m.emp_id;
避坑提醒:自连接忘了起两个别名会报「表名不明确」,务必让两遍引用指向不同的别名。