首页/数据/SQL 速查/自连接:表连接自身
本包目录(311 条)

自连接:表连接自身

同一张表连接自身:员工与经理、成对比较等场景;必须用两个不同别名区分两侧,否则无法引用。

SQL 速查数据更新于 2026-10-12

员工与经理

员工与经理
SELECT e.name AS employee,
       m.name AS manager
FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id
ORDER BY e.id;
别名两侧必须不同,否则引用歧义或报重复表名
连接类型用 LEFT JOIN 保留没有上级的员工
深层级层级超过一层时用递归 CTE

易错点

  • 自连接的中间结果接近表大小的平方,表很大时确认过滤条件与索引再执行
  • 用 INNER JOIN 会丢掉没有上级的根节点员工,按业务选择连接类型

数据来源与参考

  • MySQL 8.0 Reference Manual · Self-Joins
  • PostgreSQL Documentation · Joined Tables
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌