获取分组后的最新一条记录

例如: 我有一张表记录着所有人员的打卡记录,我想获取每个人的最新一条记录; 例如: 我有一张表记录着所有设备的上报记录,我想获取每个设备的最新一条上记录; 等等类似相关的需求

 

#利用分组 最大值关联
SELECT r.* 
FROM `runoob_tbl` r INNER JOIN (
SELECT MAX(submission_date) submission_date,runoob_author FROM runoob_tbl GROUP BY runoob_author
) b ON b.submission_date = r.`submission_date`;

#利用 distinct 去重
SELECT * 
FROM ( SELECT DISTINCT * FROM `runoob_tbl` ORDER BY submission_date DESC) AS t1 
GROUP BY t1.runoob_author;

max 函数仅仅对当前字段保证最大,与他一并查询出来的字段无法保证与之对应,所以还需要进行子查询关联; 利用 distinct 可以打破 mysql 分组排序优化,所以可以取到正确的结果;

 

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...