选择最新的行

时间:2014-02-14 15:09:20

标签: mysql sql select max

我在数据库中有一个表,我希望在某些条件下从中选择最新的行。

我做了一个fiddle来更好地解释我的需求。

正如您所看到的,我已经尝试创建一个查询来获取我想要的数据。但不幸的是,我不仅获得了最新的行,而且实际上每行都符合条件,但是日期。

我尝试用伪sql解释我想要的东西:

SELECT * FROM test WHERE date = Max(date) AND user = 'Timmy';

编辑:似乎并不完全清楚我想要的是什么。 'date'描述了配置文件的创建日期。所以我想获得'Timmy'的最新资料。

2 个答案:

答案 0 :(得分:10)

如果要返回与其关联的最新日期的行,还可以使用子查询来获取结果:

select t1.description,
  t1.date,
  t1.profile,
  t1.user,
  Replace(t1.locations, ',', '|') locations
from test t1
inner join
(
  select max(date) date, profile, user
  from test
  group by profile, user
) t2
  on t1.user = t2.user
  and t1.date = t2.date
  and t1.profile = t2.profile
where t1.user = 'Timmy'
order by t1.profile

请参阅SQL Fiddle with Demo

子查询将返回每个用户和个人资料的最大日期,然后将其连接回用户,个人资料和日期的表格,以返回每个用户的每个个人资料的最新行(或者,就像这里一样,特定用户的每个配置文件。)

答案 1 :(得分:3)

SELECT description,
       date,
       profile,
       user,
       Replace(locations, ',', '|') AS locations
FROM   test AS t
WHERE date = (
                  SELECT date
                  FROM test AS tm
                  WHERE tm.user = t.user
                  ORDER BY date DESC
                  LIMIT 1
                 )
  AND user = 'Timmy'
ORDER  BY profile ;     -- whatever