mysql - 使用 "in"获取记录组合的 SQL 语句中的问题

标签 mysql sql aggregate-functions

我有一个包含 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/

相关文章:

mysql - Linux/mysql 将 mysql 表输出写入文件并保持 mysql 格式。

mysql - 为什么是语法错误?

c# - LINQ 在列表或表上更快吗?

sql - 如何在 SQL Server 中的滑动窗口上聚合(计算不同的项目)?

MySQL:选择每个聚合组中的最后一行

mysql - gradle中字符串的字符编码

C# 查询 MySql 数据库不返回所有列

mysql - 这个符号是什么意思 := in sql

apache-spark - 如何在 Spark SQL 中找到分组向量列的平均值?

MySQL CPU 最大化