选择最旧的最新行

时间:2014-07-21 19:54:34

标签: mysql

我有一张桌子,用于存储他们在每场比赛中所做的球员的得分(包括日期)。

Example:
john  154  10/02/2014
mat   178  09/02/2014
eric  270  08/02/2014
mat   410  07/02/2014
john  155  06/02/2014

在这个例子中,我想要“eric 270 08/02/2014”,因为这是最老的最重要的。 我必须做哪个请求来检索它?

2 个答案:

答案 0 :(得分:2)

根据我的理解,您请求包含每个用户中最新一个的集合中最旧的条目。

在这种情况下,您可以使用给定每个用户的最后日期的子查询来处理您的问题,然后在主查询中使用它来选择和排序每个用户的最新条目。

SELECT scores.* 
FROM scores
INNER JOIN
(
  SELECT max(date) last, name
  FROM scores
  GROUP BY name
) last_temp_table
ON scores.name = last_temp_table.name
AND scores.date = last_temp_table.last
ORDER BY scores.date ASC LIMIT 1;

不同SO主题中的更多信息,例如MySQL order by before group by

答案 1 :(得分:0)

除非您定义最新,否则措辞问题没有多大意义。

如果我认为你有一些标准,如:"给出过去3天内发生的最老的事件"那么这就是订购和限制日期范围的简单问题。

select * from events where ts >= CURDATE() - 3
 order by ts asc
  limit 1