为什么我的简单selectsql查询失败了?

qyuhtwio  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(257)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

11个月前关门了。
改进这个问题
作为内部查询的一部分,我需要选择每个员工(emp\u no)工作过的最新部门号(dept\u no)。注意,有些员工在多个部门工作。此表的名称为dept\u emp。
这看起来很简单(也许是),但我还没弄明白。这是我尝试过的问题之一

SELECT dept_no, emp_no, from_date
FROM dept_emp
GROUP BY emp_no
HAVING MAX(from_date);

这不会返回正确的结果。对于员工“10010”,它返回部门号“d004”和日期“1996-11-24”,而我期望的是“d006”和“2000-06-26”
有人能向我提出一个有效的问题吗?

i5desfxk

i5desfxk1#

您的查询格式不正确。如果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

相关问题