php - 如何在mysql中为按日期分组的最大日期选择相应的列

标签 php mysql sql

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 函数来实现这一点,而且我很难理解其他示例/solutions 所以我决定发布我自己的具体场景。

最佳答案

这个问题每天都会被问到。有时,它也能得到正确的回答。不管怎样,纯粹主义者不会喜欢它,但这里有一个选择:

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

显然,要实现此目的,需要使用日期时间数据类型来存储日期。

关于php - 如何在mysql中为按日期分组的最大日期选择相应的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30342824/

相关文章:

php - Google App Engine 上的 Laravel 队列

php - 我无法在 Laravel 中使用事务

mysql - 2 个客户创建并配置了主从

sql - 在 JOIN sql 上连接 2 个列值

mysql - 无法在变量中捕获查询的输出

sql - 如何在oracle中为两个表执行别名连接?

php - 提取html代码中的两个字符串

php - Facebook API : Get user profile details

php - 在 laravel 5.4 mix 上添加 jQuery

mysql - 具有 max 和多个连接的 sql