0


MySql 相同数据取最新一条

开发中经常会遇到,分组查询最新数据的问题,下面的解决方案可以进行处理解决。

场景:
有一个考试提交记录表,需要获取相同学员提交的最新考试提交数据进行展示。
如图所示,学员“虞姬”有三条提交记录,其中提交时间为“2024-03-12 13:09:35”的数据为最新的一条。所以我们需要只获取这条最新的提交数据。

在这里插入图片描述

方法一:子查询与MAX()函数

SELECT*FROM exam_submit t1
WHERE t1.id =(SELECTMAX(id)FROM exam_submit t2
    WHERE t1.user_id = t2.user_id
)

在这里插入图片描述

方法二:子查询与limit结合

如果主键id是uuid用Max()函数可能有问题,可以改造一下按照下面方式查询处理。

SELECT*FROM exam_submit t1
WHERE t1.id =(select id from exam_submitt2
    where t1.user_id = t2.user_id 
    orderby submit_time desclimit1)

在这里插入图片描述

方法三:join与Max()函数

SELECT t1.*FROM exam_submit t1
join(select user_id,max(submit_time)as submit_time 
    from exam_submit sub groupby sub.user_id
) t2 on t1.user_id = t2.user_id and t1.submit_time = t2.submit_time

在这里插入图片描述

方式四:ROW_NUMBER()函数

select*from(select sub.*, 
    row_number()over(partitionby user_id orderby submit_time desc)as rowNum
    from exam_submit sub
) t1 where t1.rowNum =1

在这里插入图片描述

方式五:join与ROW_NUMBER()函数

SELECT t1.*FROM exam_submit t1
join(select sub.*, 
    row_number()over(partitionby user_id orderby submit_time desc)as rowNum 
    from exam_submit sub
) t2 on t1.id = t2.id
where t2.rowNum =1

在这里插入图片描述

标签: mysql 数据库

本文转载自: https://blog.csdn.net/qq_44869932/article/details/138707605
版权归原作者 勿 言 所有, 如有侵权,请联系我们删除。

“MySql 相同数据取最新一条”的评论:

还没有评论