如何编写SQL通过同表ID关联查询员工姓名及其直属上级姓名
SQL查询解法
这个需求属于典型的表自关联查询场景,使用左连接即可实现保留无上级员工的记录需求,具体实现如下:
前提说明
假设你的员工信息表名为 employee,如果实际使用的表名不同,替换SQL中的表名即可。
具体SQL语句
SELECT e.Name AS 'Name', s.Name AS 'Supervisor' FROM employee e LEFT JOIN employee s ON e.SupervisorID = s.ID;
逻辑解释
- 给同一张员工表设置两个别名:
e代表员工维度,s代表上级维度 - 使用
LEFT JOIN左连接关联两张逻辑表,关联条件为员工的直属上级ID等于上级记录的ID - 左连接特性会保留左侧
e表的所有记录,当没有匹配到上级记录时,s.Name字段会自动返回NULL,完全符合预期输出要求。
内容的提问来源于stack exchange,提问作者Nick Giordano
相关产品推荐
相关产品推荐

