我有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
此查询返回第一个登录记录。
答案 0 :(得分: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
答案 1 :(得分:-1)
在伪代码中:
SELECT * FROM LoginLog
WHERE MAX(LoginLog.primary_id) AND user.id = loginLog.userId
假设LoginLog中有自动增量PK列
不要忘记索引userId列以获得更好的性能