3

我有 2 个表: User 和 LoginLogs 以及 User 和 LoginLog 有“有很多”关系。我必须从 LoginLog 表中获取用户的最后一次登录。我必须使用 group by 查询上次登录用户的详细信息。这是查询:

SELECT * FROM `login_logs` 
AS `LoginLog` 
LEFT JOIN `users` 
AS `User` 
ON (`LoginLog`.`user_id` = `User`.`id`) 
WHERE 1 = 1 GROUP BY `LoginLog`.`user_id` 
ORDER BY `LoginLog`.`login_datetime` DESC LIMIT 20

此查询返回第一个登录记录。

4

2 回答 2

0

为什么你使用限制 20 ?使用限制 0,1 通过 login_datetime DESC 查找第一个记录顺序

尝试这个

SELECT * FROM `login_logs` 
AS `LoginLog` 
LEFT JOIN `users` 
AS `User` 
ON (`LoginLog`.`user_id` = `User`.`id`) 
WHERE 1 = 1  ORDER BY `LoginLog`.`login_datetime` DESC LIMIT 0 ,1
于 2013-04-16T07:31:53.910 回答
-1

在伪代码中:

 SELECT * FROM LoginLog 
 WHERE MAX(LoginLog.primary_id) AND user.id = loginLog.userId

假设 LoginLog 中有自动递增的 PK 列

不要忘记索引 userId 列以获得更好的性能

于 2013-04-11T07:44:12.667 回答