sql多条id相同的数据取各id的最后一条

如题,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() 的。
在使用的过程中存在问题可直接回复这个回答。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

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