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函数来实现这一点,而且我很难理解其他示例/解决方案所以我决定发布我自己的特定场景。
答案 0 :(得分:1)
这个问题每天都在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;
显然,为了工作,需要使用日期时间数据类型存储日期。