第一种思路:
先查询每个用户最近一天登录的日期date及用户号user_id、client_id形成一张表,再与用户(user)表、客户端(client)表进行联结,匹配对应的用户的名字,以及用户用的设备的名字,并且将查询结果按照user的name升序排序;
首先使用了错误的代码如下:

select u.name as u_n,
       c.name as c_n,
       m.max_d as date
from(select user_id,
            client_id,
            max(date) as max_d
     from login
     group by user_id) as m join user as u on m.user_id=u.id
                            join client as c on m.client_id=c.id
order by u.name;

输出结果:
图片说明
研究结果发现,错误出在如下代码

select user_id,
       client_id,
       max(date) as max_d
from login
group by user_id

错误代码输出如下:
图片说明
问题定位是:group by 分组与聚合函数max()对查询原表其他关联字段client_id未能做到准确匹配的造成的
改进方法1:使用where (user_id,date) in ()

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

改进方法2:使用窗口函数

select u.name as u_n,
       c.name as c_n,
       m.max_d as date
from(select user_id,
            client_id,
            date as max_d
     from(select user_id,
                 client_id,
                 date,
                 row_number() over(partition by user_id order by date desc) as row_n
          from login) as a
     where row_n=1) as m join user as u on m.user_id=u.id
                         join client as c on m.client_id=c.id
order by u.name;

第二种思路:
先将登录(login)记录表、用户(user)表、客户端(client)表进行联结,再用where (user_id,date) in ()匹配对应的每个用户最近一天登录的日期date及用户号user_id,并且将查询结果按照user的name升序排序;

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

仅供参考!