Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询未显示正确的结果_Mysql - Fatal编程技术网

MySQL查询未显示正确的结果

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

我想指定有>=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 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
)