1. 首先明确出要查询的目标:
    用户名, ---> 来自于用户表
    客户端名, ---> 来自于客户端表
    date ---> 来自于login表
  2. 然后目标明确,进行三表聚合:
    SELECT
      u.name as u_n,
      c.name as c_n,
      l.date
    from login l
      join user u on l.user_id=u.id
      join client c on l.client_id=c.id 
  3. 根据题意筛选出目标行:
    不能直接使用max(date)选出最近的登录记录,问题在于这里的max(date)是最近时间,但是这个最近时间不和前面的数据有联系;比如:select id,max(date) from login,这里面id和max(date)没有联系,是所有行的最大值;
    所以,只能在where中筛选出数据:
    SELECT
      u.name as u_n,
      c.name as c_n,
      l.date
    from login l
      join user u on l.user_id=u.id
      join client c on l.client_id=c.id
    where (l.user_id,l.date) in (select user_id,max(date) from login group by login.user_id)
    order by u.name;
    总结:也就是说,
    (select user_id,max(date) from login group by login.user_id) 
    查询出了每组的 user_id ,组内的max(date);