我目前有这个问题:
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
的条目。
我该如何正确地做到这一点?
答案 0 :(得分: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`)
答案 1 :(得分:1)
只需选择 MAX(users_sessions
。lastActive
),而不是 users_sessions
。lastActive
并使用 GROUP BY users
。uidNumber
。它应该工作。