用户的SQL查询存在两个关键问题,导致无法准确获取每个用户最近登录的设备信息: 1. 分组逻辑错误导致设备信息不准确 当前查询直接对`u.name`分组,但`client_id`未参与分组。当用户在同一天用不同设备登录时,会随机返回一个设备名称(如示例中fh在2020-10-13可能用ios和pc两种设备登录,但查询只会显示其中一个)。 错误示例: ```sql GROUP BY u.name -- 错误的分组字段 ``` 2. 未关联最近日期对应的设备信息 `MAX(date)`只能获取最近日期,但未明确该日期对应的`client_id`。正确做法需要先找到每个用户最近登录的完整记录(含日期和设备),再关联设备名称。 --- ### 修正后的SQL方案 ```sql SELECT u.name AS u_n, c.name AS c_n, l.date FROM ( SELECT user_id, client_id, date, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY date DESC) AS rn 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.rn = 1 ORDER BY u.name ASC;