3,491
社区成员
发帖
与我相关
我的任务
分享
SELECT * FROM T T1
WHERE 登录时间=(SELECT MAX(登录时间) FROM T WHERE 人名=T1.人名)
SELECT * FROM
(select T.*,row_number() over(partation by 人名 order by 登录时间 desc) rn
from T)
WHERE rn=1
目前来说,应该主要就1#、2#、5#这3种方法,速度的话2#最快select
人名,MAX(登录时间) 登录时间,
max(C1)keep(dense_rank last order by 登录时间) C1,
max(C2)keep(dense_rank last order by 登录时间) C2,
max(C3)keep(dense_rank last order by 登录时间) C3,
max(C4)keep(dense_rank last order by 登录时间) C4,
from T
GROUP BY 人名
语句中C1、C2、C3、C4为表中的其他字段,这种写法写起来比较麻烦,但是效率比not exists要好,如果数据量较大,建议这种写法select * from T T1
WHERE NOT EXISTS(SELECT 1 FROM T WHERE 人名=T1.人名 AND 登录时间>T1.登录时间)