利用子查询先查出最近登录日期,然后再一一对应即可

select b.name as u_n, c.name as c_n, a.date from login a 
left join user b on a.user_id = b.id
left join client c on a.client_id = c.id
where (a.user_id,a.date) 
in (select user_id, max(date) from login group by user_id)
order by b.name;

失败案例:group by 后的内容要在select中体现。

select b.name,c.name,max(a.date) from login a 
left join user b on a.user_id = b.id
left join client c on a.client_id = c.id
group by a.user_id order by b.name;