首页 > 开发 > MySQL > 正文

一个用户日志表,每个用户都有多条记录,获取每个用户最后的一条记录,怎么做查询过滤,用group by过滤后得到的是最早的记录

2017-09-08 08:51:01  来源:网友分享

有一个用户日志表,每个用户都有多条记录,现在要获取每个用户最后的那条记录,如果用 group by uid 的话,得到的是最早的那条记录,要得到最后的记录,要如何进行过滤,一直没合适方法。

表结构(id 是主键):
id uid log
1 1 log11
2 1 log22
3 3 log33
4 2 log44
5 2 log55
6 1 log66
7 3 log77
8 2 log88
9 1 log99

需要的结果是:
3 log77
2 log88
1 log99

用 group by uid 得到的结果是:
4 2 log44
3 3 log33
1 1 log11
都是最早的记录

如果要获取每个用户最后的一条记录,怎么修改查询方法呢?

解决方案

没有排序没有聚合函数当然只能取到第一条记录了
给你两个sql
select id,uid,log from (select * from user order by uid,id desc) aa group by uid;
select * from user where id in (select max(id) from user group by uid);