写出一个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



京公网安备 11010502036488号