0

このクエリで使用しているテーブルが2つあります。最初のテーブルは「users」で、2番目のテーブルは「logs」です。「users」の「username」列とログの「time_stamp」列を表示しようとしていますが、結果に「username」ごとの最新の「time_stamp」のみを表示したいのですが。

これが私の質問です:

 SELECT users.username, logs.time_stamp 
 FROM users, logs 
 WHERE users.u_id=logs.user_id 
   AND logs.user_action='user login' 
 GROUP BY (username) 
 ORDER BY logs.time_stamp DESC

これは私が得るものです:

Alex   2013-02-20 10:51:52
Bill   2013-02-13 12:32:33
Mike   2013-02-13 10:53:47
Rick   2013-02-08 12:34:50
Admin  2013-02-08 01:55:31

一見問題ないように見えますが、各ユーザーの最新のtime_stampは表示されていません。私は自分が間違っていることを理解することができません、どんな助けもいただければ幸いです。

ありがとう

4

1 に答える 1

0

MAX集計関数を使用する必要があります。

SELECT
  users.username,
  MAX(logs.time_stamp)
FROM
  users INNER JOIN logs ON users.u_id=logs.user_id
WHERE 
  logs.user_action='user login' 
GROUP BY username
于 2013-03-21T10:33:00.900 に答える