1 用开窗函数在各分组内以日期降序排名, 2 连接用户表和设备表, 3 where筛选第1步中排名为1的行,就是各分组中日期最晚的行数据

select user.name u_n,client.name c_n,t.date
from 
(select user_id,client_id,date,rank() over(partition by user_id order by date desc) date_rank from login) t 
left join user on t.user_id=user.id
left join client on t.client_id=client.id
where t.date_rank=1
order by u_n;