选择最新的行

Mar*_*ost 2 mysql sql select max

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

我做了一个小提琴来更好地解释我的需求.

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

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

SELECT * FROM test WHERE date = Max(date) AND user = 'Timmy';
Run Code Online (Sandbox Code Playgroud)

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

Tar*_*ryn 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
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo.

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

  • *'我希望得到**每个**最新的'Timmy''配置文件* - 我相信`profile`也应该被包含在'GROUP BY'中 (3认同)