【问题标题】:Why does my simple select SQL query fail? [closed]为什么我的简单选择 SQL 查询失败? [关闭]
【发布时间】:2020-06-12 15:59:50
【问题描述】:

作为内部查询的一部分,我需要选择每个员工 (emp_no) 工作过的最新部门编号 (dept_no)。请注意,一些员工曾在多个部门工作。该表的名称是 dept_emp。

这似乎很简单(并且可能是),但我一直无法弄清楚。这是我尝试过的查询之一

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

这不会返回正确的结果。对于员工“10010”,它返回dept_no“d004”和from_date“1996-11-24”,而我期望“d006”和“2000-06-26”

谁能向我建议一个有效的查询?

【问题讨论】:

标签: mysql sql select


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多