SQL分组查询,结果只取最新记录

 select a.* from (select * from TABLE order by create_time desc) a group by a.user_id

  

这里查询的是USER_ID相同的最新一条数据
注:
在mysql5.7以及之后的版本,如果GROUP BY的子查询中包含ORDER BY,但是 GROUP BY 不与 LIMIT 配合使用,ORDER BY会被忽略掉,所以子查询在 GROUP BY 时排序不会生效

使用如下SQL:

若主键随排序字段自增
select e.* from TABLE e where e.id in (select max(id) from TABLE group by user_id
若非自增,第一版的子查询加limit

select a.* from (select * from TABLE order by create_time desc limit 999999) a group by a.user_id
————————————————
版权声明:本文为CSDN博主「Mr_YDK」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ydk888888/article/details/77036946/

posted @ 2023-05-04 12:16  低调的小白  阅读(1110)  评论(0编辑  收藏  举报