我有一个包含 2 列的表,比如 Empname、DepartmentName,其中一名员工可能在多个部门工作,反之亦然。 我想编写一个查询以根据某些部门组合选择 EmpName。 对于前。仅在Dept1、Dept2和Dept3下工作的员工(本例中应仅选择仅在3个部门下工作的员工)
这是我尝试过的查询。
Select EmpName, Count(*) as Total from Emp_Departments where DepartmentName in ('Dept1', 'Dept2', 'Dept3') group by EmpName having Total=3
这里的问题是,任何在上述任何部门工作且总人数为 3 的员工,它也会返回他们的行。 请建议我如何才能获得独特的组合。
最佳答案
你很接近 - 使用:
SELECT d.EmpName, COUNT(*) as Total
FROM Emp_Departments d
WHERE d.DepartmentName IN ('Dept1', 'Dept2', 'Dept3')
GROUP BY d.EmpName
HAVING COUNT(DISTINCT d.DepartmentName) = 3
关于mysql - 使用 "in"获取记录组合的 SQL 语句中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843988/