用rank()over() 做排序再取值select name, t.tpye, t.ldate from ( select u.name, c.name tpye, max(l.date) ldate, rank() over ( partition by u.name order by l.date desc ) posn from login l left join user u on l.user_id = u.id ...