Mysql 为什么我的简单select SQL查询失败?
作为内部查询的一部分,我需要选择每个员工(emp_编号)工作过的最新部门编号(部门编号)。注意,一些员工在多个部门工作。此表的名称为dept_emp 这看起来很简单(也许是),但我一直没能弄明白。这是我尝试过的问题之一Mysql 为什么我的简单select SQL查询失败?,mysql,sql,select,Mysql,Sql,Select,作为内部查询的一部分,我需要选择每个员工(emp_编号)工作过的最新部门编号(部门编号)。注意,一些员工在多个部门工作。此表的名称为dept_emp 这看起来很简单(也许是),但我一直没能弄明白。这是我尝试过的问题之一 选择部门号、emp号、起始日期 来自环境管理部 emp_编号分组 具有最大值(自年月日起); 这不会返回正确的结果。对于员工“10010”,它返回部门编号“d004”和日期“1996-11-24”,而我预期的是“d006”和“2000-06-26” 有人能向我提出一个有效的问题
选择部门号、emp号、起始日期
来自环境管理部
emp_编号分组
具有最大值(自年月日起);
这不会返回正确的结果。对于员工“10010”,它返回部门编号“d004”和日期“1996-11-24”,而我预期的是“d006”和“2000-06-26”
有人能向我提出一个有效的问题吗
您的查询格式不正确。如果MySQL接受它,您可能正在运行MySQL 5.x。默认情况下,MySQL 8.x不再接受这些格式错误的查询 为了获得所需的行,可以使用子查询。例如:
select
d.dept_no,
d.emp_no,
d.from_date
from dept_emp d
join (
select emp_no, max(from_date) as max_from_date
from dept_emp
group by emp_no
) m on m.emp_no = d.emp_no
and m.max_from_date = d.from_date
您的查询格式不正确,MySQL应该会产生错误。您的
SELECT
和groupby
列不兼容。谢谢您的回复。有没有一种方法可以重写它,使其正确运行?它确实运行,但没有返回正确的输出。请参阅