不用 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