2012-03-26 17 views
9

Mam tabelę mysql z trzema kolumnami: nazwa użytkownika, lokalizacja, znacznik czasu. Zasadniczo jest to dziennik aktywności użytkownika, w którym miejscu i czasie, w którym się znajdował.Zapytanie SQL dla wyboru odrębnego z najnowszym znacznikiem czasu najpierw

Co chcę zrobić, to wybrać odrębną nazwę użytkownika + lokalizację, w której dostępny jest tylko najnowszy element (według datownika).

Tak mówią tabela składa się z:

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 

chciałbym tylko te, które zostaną wybrane:

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

Odpowiedz

15

wypróbować następującą frazę tabela1 jako swojej nazwa-tabeli:

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

Ta odpowiedź w rzeczywistości nie gwarantuje, że inne kolumny mają taki sam rekord, jak nazwa użytkownika/znacznik czasu, ale następujący kod: l (za pomocą podkwerendy).

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 

Odpowiedź znaleźć na stronie:

Select distinct most recent

Powiązane problemy