我有一张桌子,用于存储他们在每场比赛中所做的球员的得分(包括日期)。
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”,因为这是最老的最重要的。 我必须做哪个请求来检索它?
答案 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