Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
先使用最新时间戳的select distinct的SQL查询_Sql_Distinct - Fatal编程技术网

先使用最新时间戳的select distinct的SQL查询

先使用最新时间戳的select distinct的SQL查询,sql,distinct,Sql,Distinct,我有一个mysql表,有三列:用户名、位置、时间戳。这基本上是一个用户活动日志,记录了他们所在的位置以及他们在那里的时间 我想做的是选择一个独特的用户名+位置,其中只提供最近的项目(按时间戳) 因此,假设该表包括: 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 roo

我有一个mysql表,有三列:用户名、位置、时间戳。这基本上是一个用户活动日志,记录了他们所在的位置以及他们在那里的时间

我想做的是选择一个独特的用户名+位置,其中只提供最近的项目(按时间戳)

因此,假设该表包括:

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

使用table1作为tablename,尝试以下查询:

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

这个答案实际上并不能保证其他列与用户名/时间戳的记录相同,但下面的答案(使用子查询)可以保证

答案载于:

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