如何编写SQL查询获取所有员工姓名及其部门经理姓名?
查询员工及其所属部门经理姓名的解决方案
表关联逻辑
- 员工表(Employees)与部门表(Departments)通过
Employees.DEPID = Departments.DID关联 - 部门表的
MGRID字段对应员工表的EID(即部门经理的员工ID)
需求说明
需要查询所有员工的姓名(FNAME),并将原查询结果中的MGRID替换为对应的经理姓名(同样来自Employees表的FNAME)。
正确的SQL查询语句
select emp.FNAME as 员工姓名, dept.D_NAME as 所属部门, mgr.FNAME as 经理姓名 from EMPLOYEES emp left join DEPARTMENTS dept on emp.DEPID = dept.DID left join EMPLOYEES mgr on dept.MGRID = mgr.EID;
语句解释
- 为表设置别名(
emp代表员工表、dept代表部门表、mgr代表经理对应的员工记录),简化语句结构 - 第一次
LEFT JOIN关联员工与部门,确保所有员工都能被查询到(即使部分员工未关联部门也会保留) - 第二次
LEFT JOIN通过部门的经理ID(MGRID)关联员工表,获取经理的姓名 - 使用
AS设置中文别名,让查询结果更直观易读
预期查询结果示例
员工姓名 所属部门 经理姓名 -------------------- --------------- ---------- SHAHID Accounts NULL PREM Accounts NULL AKASH Accounts NULL SHAAN IT NULL VISHAL IT NULL DEV Management NULL SOME Design NULL MANISHA Design NULL ISHAAN Web SHAHID ADITI Web SHAHID KAVITA Web SHAHID
(注:示例中Accounts等部门的经理姓名为NULL,是因为原查询结果中这些部门的MGRID为空;若后续部门设置了经理,会自动显示对应姓名)
内容的提问来源于stack exchange,提问作者Jayant Verma
相关产品推荐
相关产品推荐

