2012-03-26 11 views
9

Tengo una tabla mysql con tres columnas: nombre de usuario, ubicación, marca de tiempo. Esto es básicamente un registro de la actividad del usuario, en qué ubicación se encuentra y el tiempo que estuvieron allí.Consulta SQL para seleccionar distinto con la marca de tiempo más reciente primero

Lo que quiero hacer es seleccionar un nombre de usuario distinto + ubicación donde solo se proporciona el elemento más reciente (por fecha y hora).

Así dicen la mesa se compone de:

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 

me gustaría que sólo éstas sean seleccionadas:

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

Respuesta

15

tratar la siguiente consulta con tabla1 como su nombre de tabla:

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

Esta respuesta en realidad no garantizará que las otras columnas tengan el mismo registro que el nombre de usuario/marca de tiempo, pero el siguiente wil l (usando una subconsulta).

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 

respuesta encontrar en:

Select distinct most recent

Cuestiones relacionadas