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

如何编写单个SQL查询获取员工表中员工与对应经理的姓名?

获取员工及其对应经理姓名的SQL查询方案

嘿,作为刚入门SQL的新手,碰到这种需要从同一张表关联出上下级关系的问题很常见,咱们用自连接就能轻松解决!

核心思路:自连接(Self-Join)

你的Employee表同时存储了员工和经理的信息——经理本身也是员工(有自己的id),所以我们可以把这张表当成两个独立的表来用:一个代表员工,一个代表经理,通过员工的manager_id = 经理的id这个条件来关联它们。

基础SQL查询(仅含有经理的员工)

如果只需要查询有直属经理的员工,用INNER JOIN就可以:

SELECT 
    emp.name AS 员工姓名,
    mgr.name AS 经理姓名
FROM 
    Employee emp
INNER JOIN 
    Employee mgr ON emp.manager_id = mgr.id;
  • 这里给表起了别名emp(员工表)和mgr(经理表),避免字段名冲突,也让SQL更易读。
  • ON emp.manager_id = mgr.id是核心关联条件:员工的经理ID等于经理的员工ID。

包含无经理员工的查询(全覆盖)

如果有些员工没有经理(比如公司老板,manager_id为NULL),想要把这些员工也纳入结果,就用LEFT JOIN:

SELECT 
    emp.name AS 员工姓名,
    COALESCE(mgr.name, '无经理') AS 经理姓名
FROM 
    Employee emp
LEFT JOIN 
    Employee mgr ON emp.manager_id = mgr.id;
  • LEFT JOIN会保留左表(员工表)的所有记录,即使没有匹配的经理记录。
  • COALESCE函数用来把NULL(无经理时的默认结果)替换成更友好的文字,比如“无经理”。

实际数据示例

假设你的Employee表数据如下:

idnamemanager_id
1BBBNULL
2AAA1
3CCC1
4DDD3

用左连接的查询结果会是:

员工姓名经理姓名
BBB无经理
AAABBB
CCCBBB
DDDCCC

这样就能清晰看到每个员工对应的经理啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:55:26