2012-03-26 18 views
9

Üç sütun içeren bir mysql tablom var: kullanıcı adı, konum, zaman damgası. Bu, temel olarak, hangi konumda bulunduklarını ve bulundukları zamanın kullanıcı etkinliğidir.En son timestamp sayısı ile belirgin olan SQL sorguları için ilk

Yapmak istediğim, yalnızca en son öğenin (zaman damgasına göre) sağlandığı farklı bir kullanıcı adı + yeri seçmektir. Sadece bu seçilecek isteyeyim

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 

cevap

15

sizin tabloismi olarak table1 ile aşağıdaki sorguyu deneyin:

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

Yani tablo oluşur demek

Bu yanıt, diğer sütunların kullanıcı adı/timestamp ile aynı kayıtta olmasını garanti etmeyecektir, ancak aşağıdaki wil l (bir alt sorgu kullanarak).

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 

Cevap bulundu at:

Select distinct most recent

İlgili konular