首页 > 解决方案 > mysql 中获取最新时间员工列表的最佳查询是什么?

问题描述

我有一个巨大的表,每当我需要从中获取特定数据时,它都会使数据库挂起。我想收集每个员工的最新时间等信息。

数据库就像:

+----------+--------+----------+
| 员工名 | 时间 | 位置 |
+----------+--------+----------+
| 拉玛 | 1:05 | 啊 |
| 拉玛 | 2:10 | bb |
| 阿朱 | 4:30 | 抄送|
| 拉玛 | 6:00 | dd |
+----------+--------+----------+

我需要像这样的输出:

+----------+--------+----------+
| 员工名 | 时间 | 位置 |
+----------+--------+----------+
| 阿朱 | 4:30 | 抄送|
| 拉玛 | 6:00 | dd |
+----------+--------+----------+

我试过了:
1)

SELECT emp_name, time, location FROM tbl_emp 
WHERE time IN (SELECT max(time) FROM tbl_emp GROUP BY emp_name);

2)

SELECT emp_name, time, location FROM tbl_emp AS att 
LEFT JOIN tbl_emp AS tmp ON tmp.emp_name=att.emp_name AND tmp.time>att.time
WHERE tmp.time is NULL 
GROUP BY att.employee_id;

但两者都使查询太慢。

标签: mysql

解决方案


使用分组和聚合

SELECT emp_name, max(time)
FROM tbl_emp
group by emp_name

推荐阅读