SQL查询:按部门ID排序查询管辖全部门的经理姓名及部门名称
问题说明
你的现有SQL存在两处逻辑错误,导致返回结果远多于预期:
- 多余的员工表自连接:你用
mgr.manager_id = e.employee_id关联两张员工表,实际匹配的是所有有上级的普通员工,而非管辖整个部门的经理,相当于把全公司所有非最高级员工都纳入了查询范围 - 不必要的GROUP BY分组:部门与部门经理本身是一一对应关系,不存在需要分组去重的场景
正确查询代码
管辖整个部门的经理ID直接存储在departments表的manager_id字段中,直接关联该字段与员工表即可:
SELECT e.first_name, e.last_name, d.department_name FROM departments d INNER JOIN employees e ON d.manager_id = e.employee_id ORDER BY d.dept_id;
逻辑校验
- 以部门表为基础,每条记录对应一个独立部门,天然保证不会出现重复部门
- 关联员工表后直接获取对应部门经理的姓名信息
- 最终按部门ID排序,完全匹配需求
内容的提问来源于stack exchange,提问作者user8964654
相关产品推荐
相关产品推荐

