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
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 に答える
1

の代わりにMAX(users_sessionslastActiveを選択するだけですusers_sessionslastActiveGROUPBYusersuidNumberを使用します。動作するはずです。

于 2012-10-13T13:03:45.930 に答える