mysql group by 取想要的结果
今天有个需求,分组后取时间最新的记录,类似如下:
两个表
emp
员工表dept
部门表
emp
字段名称 | 描述 |
---|---|
emp_no | 员工编号 |
emp_name | 员工姓名 |
age | 年龄 |
dept_no | 部门编号 |
hiredate | 入职日期 |
dept
字段名称 | 描述 |
---|---|
dept_no | 部门编号 |
dept_name | 部门姓名 |
数据如下:dept
emp
查询每个部门最早入职的员工
SELECT
*
FROM
(
SELECT
e.emp_no,
e.emp_name,
d.dept_no,
d.dept_name,
e.hiredate
FROM
emp e
INNER JOIN dept d ON e.dept_no = d.dept_no
ORDER BY
e.hiredate ASC
LIMIT 1000
) a
GROUP BY
dept_no
ORDER BY
dept_no
结果
其中 LIMIT 1000 这个是必须的,如果没有,就不是想要的结果,应该是mysql版本问题
欢迎各位大佬提出更优的解决办法,一起进步,记录此文的目的:一是做个笔记,加深记忆,二是练练如何写文章,三是听从昨天一位大佬的指导,先学学Markdown语法,欢迎大佬指正
本作品采用《CC 协议》,转载必须注明作者和本文链接
如果你的 mysql 版本是 8.0 可以尝试一下窗口函数!
mysql 5.7以后版本对排序sql解析优化,忽略子查询排序,需要加limit进行解析,limii要大于查询的数据 dev.mysql.com/doc/refman/5.7/en/li...