0

我目前得到这个查询:

SELECT 
    `users_sessions`.`userid` `users_sessions`.`lastActive` , `users`.`firstname`
FROM 
    `users_sessions` , `users`
WHERE 
    `users_sessions`.`lastActive` >= DATE_SUB( NOW( ) , INTERVAL 60 MINUTE )
AND 
    `users`.`uidNumber` = `users_sessions`.`userid`

它选择lastActive最多 1 小时前的所有会话。现在,由于用户可以同时拥有多个会话,我只想选择具有最大lastActive价值的一个。

我知道我以某种方式必须使用GROUP BY users_sessions.userid然后选择最大的条目lastActive

我怎样才能正确地做到这一点?

4

2 回答 2

1

只需选择MAX( users_sessions. lastActive)而不是users_sessions. lastActive并使用GROUP BY usersuidNumber. 它应该工作。

于 2012-10-13T13:03:45.930 回答
1
SELECT 
    `users_sessions`.`userid`, `users_sessions`.`lastActive` , `users`.`firstname`
FROM 
    `users_sessions` , `users`
WHERE 
    `users_sessions`.`lastActive` >= DATE_SUB( NOW( ) , INTERVAL 60 MINUTE )
AND 
    `users`.`uidNumber` = `users_sessions`.`userid`
GROUP BY 
    `users_sessions`.`userid`, `users_sessions`.`lastActive` , `users`.`firstname`
HAVING
    `lastActive` = MAX(`lastActive`)
于 2012-10-13T12:49:27.997 回答