如题,sql结果集有多条id相同的数据,取各id的最后一条(可以用时间作为各id最后一条的条件),求sql语句
select max(id) from 表名 group by id;
select p.* from (
select r.*, row_number() over ( partition by r.id order by r.时间 DESC) as num from 表名 as r) as p where p.num=1
好用记得采纳,谢谢
开窗函数row_number() 特别适合处理你这种情况,但不清楚你的数据库是什么数据库什么版本,低版本的mysql 是没有row_number() 的。
在使用的过程中存在问题可直接回复这个回答。
1.select * from (select a.*,row_number()over(partition by id order by 时间 desc from tablename as a)) where rn=1;
2.select * from tablename a where 时间=(select max(时间) from tablename b where a.id=b.id);
3.oracle数据库rowrum