You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL自连接(Self Join)工作原理解析及实例表结构疑问解答

这个SQL自连接的逻辑拆解

先把你贴的SQL整理成可读格式:

select e.first_name, e.salary, e.id, e.manager_id, e.employee_title 
from employee e
join employee e1 on e1.id = e.manager_id
where e.salary > e1.salary
order by e.manager_id;

表别名e和e1分别是什么?

  • e就是employee表本身,只是给了个短别名方便写SQL,它包含所有员工的完整数据——每个员工的姓名、薪资、ID、直属经理ID、职位这些字段都在里面。
  • e1同样是employee表的别名,但在这个SQL里它被用来代表员工的直属经理。因为连接条件是e1.id = e.manager_id,所以e1里的每一行,都是对应e表中某个员工的直属经理的信息。

自连接后得到的表是什么样的?

这里用的是内连接(join),它会把e(员工表)和e1(经理视角的员工表)做匹配关联:
只有当某员工的manager_id恰好等于某个人的id时,这两行数据才会被合并成一行。合并后的每一行,同时包含该员工的所有信息和他直属经理的所有信息(你的SQL只选取了员工的字段,但连接过程中是把两组数据合并在一起的)。

最后这个SQL的实际作用

加上where e.salary > e1.salary的筛选条件后,最终结果就是所有薪资比自己直属经理还高的员工列表,并且按经理ID做了排序。

内容的提问来源于stack exchange,提问作者Thedh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:45:37