2016-07-14 12 views
0

システムにログインするときに記録するテーブルがあります。ユーザーが正常にログインするたびに、ユーザー名とログイン時刻で新しい行が作成されます。
その結果、ユーザーは複数回表示されることがあります。たとえば、下の表に示すように、SamとSteveは、異なる日にログインしたときと同じように2回表示されます。重複したテーブルから最も最近作成された行のみを選択してください

+-----------+------------------+ 
| user_name | login_time | 
+-----------+------------------+ 
| Sam  | 2016-07-14 12:00 | 
| Steve  | 2016-07-13 09:30 | 
| Sam  | 2016-07-13 11:00 | 
| Simon  | 2016-07-14 09:00 | 
| Albert | 2016-07-14 10:30 | 
| Steve  | 2016-07-11 09:00 | 
+-----------+------------------+ 

は私が削除された
あなたはサムとスティーブのための重複以下の例でわかるように。ユーザーがログインちょうど前回のリストを取得するには、このテーブルを照会するとのみ、最新の(今日に最も近い)ログイン時間が保持されました。

+-----------+------------------+ 
| user_name | login_time | 
+-----------+------------------+ 
| Sam  | 2016-07-14 12:00 | 
| Steve  | 2016-07-13 09:30 | 
| Simon  | 2016-07-14 09:00 | 
| Albert | 2016-07-14 10:30 | 
+-----------+------------------+ 

私はこれを行う方法を見つけることができません、私はこれのための組み込み関数を見つけることができません。
MAX()を使用して最新の日付を選択すべきだと思っていましたが、どこに配置するのか分かりません。
私はこれを行うためにSELECT内でSELECTを使うことができたと思いましたが、成功しませんでした。

各ユーザーの最終ログイン日時を選択するにはどうすればよいですか。

答えて

3

user_nameで集計し、maxのログイン時間の値を取得します。

select user_name,max(login_time) as last_login 
from users 
group by user_name 
+0

誰もがこのことを言わなければならないことは知っていますが、私が試した最初のものの1つだったと確信しています!私は文法を間違っていたに違いない。ありがとう! – Equalsk

関連する問題