如何在mysql中为按DATE分组的MAX DATE选择相应的列


How to select a corresponding column in mysql for a MAX DATE grouped by DATE

mysql表:统计

columns: 
         date           | stats
05-05-2015 22:25:00     | 78
05-05-2015 09:25:00     | 21
05-05-2015 05:25:00     | 25
05-04-2015 09:25:00     | 29
05-04-2015 05:25:00     | 15

sql查询:

SELECT MAX(date) as date, stats FROM stats GROUP BY date(date) ORDER BY date DESC

当我这样做时,我确实会为每个日期选择一行(按日期分组,而不考虑时间(,并使用MAX选择最大日期,但它不会选择相应的列。例如,它返回05-05-2015 22:25:00作为date,返回25作为stats。它应该选择78作为stats。我已经做了研究,似乎已经有了解决方案,但我不熟悉JOIN或其他不太常见的mysql函数来实现这一点,而且我很难理解其他示例/解决方案,所以我决定发布我自己的特定场景。

这个问题在SO中每天都会被问到。有时,它也会得到正确的回答。无论如何,纯粹主义者不会喜欢它,但这里有一个选择:

Select x.* from stats x join (SELECT MAX(date) max_date FROM stats GROUP BY date(date)) y on y.max_date = x.date;

显然,为了实现这一点,需要使用日期时间数据类型来存储日期。