有一个用户日志表,每个用户都有多条记录,现在要获取每个用户最后的那条记录,如果用 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);