我有如图这样的一个数据,我想查找每个id中最晚时间对应的name是谁,,目前我是用MAX查找到每个id对应的最大时间,然后再去join一下这个表中,id相同,最大时间相同时对应的name。从而把name找到,但是我感觉每次都要重新再join一下这个表太麻烦了,,所以求教各位大佬,有没有简单的方法能一次就把id中最晚时间的name找到。以下是我平时用的方法,感觉好笨~~求大佬指点
select
a.id,
b.name
from
(select id,max(time) as maxtime from data1) as a
left join
(select * from data1) as b
on a.id=b.id and a.maxtime=b.time
--按id分组,time降序,产生一个记录号,然后取记录号为1的
SELECT * FROM
(
SELECT *,row_number() OVER(PARTITION BY id ORDER BY time desc) AS x from data1
) a WHERE x=1
--按id分组,time降序,产生一个记录号,然后取记录号为1的
SELECT * FROM
(
SELECT *,row_number() OVER(PARTITION BY id ORDER BY time desc) AS x from data1
) a WHERE x=1
额。。没有大佬指点一二么
差,尽然没有删除功能,这个是sql server的,我看错了,不好意思