不用 in 的话,换成 rank()over() 也可
select t.u_n, t.c_n, t.date
from
(select ur.name u_n, cl.name c_n, ln.date,
rank() over(partition by ln.user_id order by ln.date desc) rk
from login ln
join user ur on ln.user_id=ur.id
join client cl on cl.id=ln.client_id) t
where t.rk=1
order by t.u_n asc