MySQL查询未显示正确的结果
我想指定有>=3名员工的部门,在每个部门之后打印出部门员工列表 我有两张桌子:MySQL查询未显示正确的结果,mysql,Mysql,我想指定有>=3名员工的部门,在每个部门之后打印出部门员工列表 我有两张桌子: Employee_Table (Employee_Number, Employee_Name, Department_Number) Department (Department_Number, Department_Name) 这是我的SQL代码: SELECT ET.Department_Number,ET.Employee_Name FROM dbo.Employee_Table ET GROUP BY E
Employee_Table (Employee_Number, Employee_Name, Department_Number)
Department (Department_Number, Department_Name)
这是我的SQL代码:
SELECT ET.Department_Number,ET.Employee_Name
FROM dbo.Employee_Table ET
GROUP BY ET.Department_Number,ET.Employee_Name
HAVING COUNT(ET.Department_Number) >= 3
但如果我跑步,什么都不会出现:
SELECT ET.Department_Number
FROM dbo.Employee_Table ET
GROUP BY ET.Department_Number
HAVING COUNT(ET.Department_Number) >= 3
我有一个正确的结果,即101和105,但结合员工姓名,我无法得到正确的结果。在SQL Server中,我将使用和联接
WITH Departments AS (
SELECT ET.Department_Number
FROM dbo.Employee_Table ET
GROUP BY ET.Department_Number
HAVING COUNT(ET.Department_Number) >= 3
)
SELECT D.Department_Number, ET.Employee_Name
FROM dbo.Employee_Table ET
JOIN Departments ON ET.Department_Number = D.Department_Number
ORDER BY D.Department_Number
这看起来怎么样?在本例中,您需要一个子查询来获取员工数为3或更多的部门。这应该可以做到:
SELECT
ET.Department_Number,
ET.Employee_Name
FROM dbo.Employee_Table ET
join
( Select department_number, count(department_number)
from dbo.Employee_Table
group by department_number
HAVING COUNT(Department_Number) >= 3
) dept_having_3
on et.department_number = dept_having_3.department_number
那么,你希望在ET.Employee_Name列中收到什么呢?也就是说,以什么形式,因为它应该是某种聚合数据,否则,您应该将received select与表连接以获取员工的姓名?删除having count并查看按员工姓名分组时显示的内容您是在寻找MySQL还是Microsoft SQL Server?我键入了我的SQL查询,而不是MySQL,不知道为什么它会变为MySQL它工作了!非常感谢:,我在这一部分坚持了2个小时:D
SELECT
ET.Department_Number,
ET.Employee_Name
FROM Employee_Table ET
WHERE Department_Number IN
( SELECT Department_Number
FROM Employee_Table
GROUP by Department_Number
HAVING COUNT(*) >= 3
)