写出一个sql语句查询每个用户最近一天登录的日子,用户的名字,以及用户用的设备的名字,

并且查询结果按照user的name升序排序

解析:方法一错误点,先通过连接,再进行分组,造成了连接后的表字段排序混乱(GROUP BY分组后的聚合函数造成),

最终的设备名称就是不正确的,方法二,先进行分组,然后通过分组后的相关user_id,client_id关联到正确的id;

方法一:

SELECT u.name AS u_n, c.name AS c_n, MAX(l.date) AS date

FROM login AS l

INNER JOIN client AS c

ON l.client_id = c.id

INNER JOIN user AS u

ON l.user_id = u.id

GROUP BY user_id

ORDER BY u_n

方法二:

SELECT u.name AS u_n, c.name AS c_n, date FROM login AS l1 INNER JOIN client AS c ON l1.client_id = c.id INNER JOIN user AS u ON l1.user_id = u.id WHERE (l1.user_id, l1.date) IN (SELECT l2.user_id,MAX(l2.date) FROM login AS l2 GROUP BY user_id) ORDER BY u_n