我目前得到这个查询后:与列的最大值选择条目分组
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
。
我该如何正确地做到这一点?
在您的“GROUP BY”部分中,您按所有选定的列进行分组。在我最初的查询中,我选择了更多的列。我是否也应该由所有人组成? – Zulakis
您必须始终按所有选定列进行分组。 –
如果有人在看这个,答案是不正确的。 'HAVING'子句将'lastActive'的任意值与最大值进行比较,这可能会不必要地过滤掉某些行。 –