2012-03-26 10 views
9

username、location、timestampの3つのカラムを持つmysqlテーブルがあります。これは、基本的に、ユーザーがどの場所にいるのか、どこにいたのかを記録したものです。最新のタイムスタンプを持つselect distinctのSQLクエリー

私がしたいのは、最も新しいアイテム(タイムスタンプ別)のみが提供される別のユーザー名+場所を選択することです。私はこれらのみが選択されるようにしたいと思う

tom roomone 2011-3-25 10:45:00 
tom roomtwo 2011-3-25 09:00:00 
tom roomtwo 2011-3-25 08:30:00 
pam roomone 3011-3-25 07:20:23 

tom roomone 2011-3-25 10:45:00 
tom roomtwo 2011-3-25 09:00:00 

答えて

15

をあなたのテーブル名としてTABLE1に次のクエリを試してください:

select username, location, max(timestamp) from table1 
group by username, location 
1

だから表がで構成されて言います

この回答は実際には他の列がユーザー名/タイムスタンプと同じレコードであることを保証するものではありませんが、 l(サブクエリを使用)。

select t1.* 
from (
    select ForeignKeyId,AttributeName, max(Created) AS MaxCreated 
    from YourTable 
    group by ForeignKeyId,AttributeName 
) t2 
join YourTable t1 
on t2.ForeignKeyId = t1.ForeignKeyId 
and t2.AttributeName = t1.AttributeName 
and t2.MaxCreated = t1.Created 

で見つけ回答:

Select distinct most recent

関連する問題