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

如何查询同时在两个指定部门任职的员工 现有SQL执行失败原因排查

你的SQL存在的问题

  • 字段引用错误:department表的部门名字段为department_name,你写的dname不存在,会直接触发语法错误无法运行。
  • 条件逻辑矛盾:WHERE子句中同时要求department_name = 'software'和department_name = 'hardware',单条记录的字段不可能同时等于两个不同的值,即便修正字段名,查询结果也会是空集。
  • 业务逻辑不匹配:当前的三表连接方式只能匹配员工关联单个部门的记录,根本无法实现“同时属于两个不同部门”的判断需求。

正确的查询写法

方法1:分组聚合统计(推荐)

逻辑是先筛选目标部门的任职记录,按员工分组后统计关联的不同部门数量,数量为2即符合要求:

SELECT e.employee_name
FROM employee e
INNER JOIN working w ON e.employee_id = w.eid
INNER JOIN department d ON w.did = d.department_id
WHERE d.department_name IN ('software', 'hardware')
GROUP BY e.employee_id, e.employee_name
HAVING COUNT(DISTINCT d.department_name) = 2;

方法2:两次关联部门表

分别匹配员工在两个部门的任职记录,同时匹配成功即为符合要求:

SELECT DISTINCT e.employee_name
FROM employee e
INNER JOIN working w1 ON e.employee_id = w1.eid
INNER JOIN department d1 ON w1.did = d1.department_id AND d1.department_name = 'software'
INNER JOIN working w2 ON e.employee_id = w2.eid
INNER JOIN department d2 ON w2.did = d2.department_id AND d2.department_name = 'hardware';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:36:03