mysql - 只为每个员工和 MySQL 中的特定员工选择最新记录

标签 mysql sql spring spring-data-jpa greatest-n-per-group

我有一个 MySQL 数据库,里面有一个包含员工事件日志的表。

+-------------------------------------------------+
| log_id | employee_id | date_time  | action_type |
+-------------------------------------------------+
|   1    |      1      | 2015/02/03 |   action1   |
|   2    |      2      | 2015/02/01 |   action1   |
|   3    |      2      | 2017/01/02 |   action2   |
|   4    |      3      | 2016/02/12 |   action1   |
|   5    |      1      | 2016/10/12 |   action2   |
+-------------------------------------------------+

我需要 2 个查询。首先,为每个员工获取他的最后一个 Action 。因此,从这个示例表中,我需要获取包含所有列的第 3、4 和 5 行。其次,仅获取指定员工的最新操作。

有什么想法可以实现吗?我正在使用 Spring Data JPA,但原始 SQL 查询也很棒。

提前谢谢你。

最佳答案

准备好 fred ed...

SELECT x.* 
  FROM my_table x 
  JOIN 
     ( SELECT employee_id
            , MAX(date_time) date_time 
         FROM my_table 
        GROUP 
           BY employee_id
     ) y 
    ON y.employee_id = x.employee_id 
   AND y.date_time = x.date_time;

关于mysql - 只为每个员工和 MySQL 中的特定员工选择最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47635329/

相关文章:

sql - 将一列中的值解析为另一个表中的多列

java - Spring Security with session get online users 返回空

Mysql 5.5 查询优化

mysql - InnoDB 选择更新

sql - 按日期排序数据?

mysql - 添加 INNER JOIN 以将 ID 转换为另一个表中的值

mysql - 有很多事件是一个好习惯吗?

mysql - sql 'AND' 没有给出正确的结果

javax.inject.Named 使用动态名称

java - 服务器启动时出现 spring Autowiring 错误