我的数据库中有下表:
-------------------------------------------
| value | category | date |
-------------------------------------------
| 12.2 | A | yyyy-MM-dd HH:mm:ss |
-------------------------------------------
| 13.3 | A | yyyy-MM-dd HH:mm:ss |
-------------------------------------------
| 11.0 | B | yyyy-MM-dd HH:mm:ss |
-------------------------------------------
| 11.2 | C | yyyy-MM-dd HH:mm:ss |
-------------------------------------------
| 19.2 | C | yyyy-MM-dd HH:mm:ss |
-------------------------------------------
| 10.4 | C | yyyy-MM-dd HH:mm:ss |
-------------------------------------------
我正在尝试获取最大值(12.2、13.3、..)以及与每个类别(A、B、C)的该值相对应的日期。
例如这样:
-------------------------------------------
| value | category | date |
-------------------------------------------
| 13.3 | A | yyyy-MM-dd HH:mm:ss |
-------------------------------------------
| 11.0 | B | yyyy-MM-dd HH:mm:ss |
-------------------------------------------
| 19.2 | C | yyyy-MM-dd HH:mm:ss |
-------------------------------------------
我已点击此链接 SQL: How to select a max value for each group per day?
所以我做了这个查询:
SELECT MAX(value), category, date FROM myTable GROUP BY category;
但由于某种原因,我不知道为什么它没有给我想要的东西,它给了我一个错误的日期值(日期与最大日期不对应) (值))!!!
最佳答案
But for some reason i don't know why it doesn't gave me what i'm looking for, it gave's me a wrong value
在这种情况下它没有为您提供正确值的原因:
SELECT MAX(value), category, date FROM myTable GROUP BY category;
是这样的,当您在mysql的select
子句中包含不包含在group by
或像date
这样的聚合函数中的列时code>,mysql为它选择任意值,这样它就会给你错误的值,而不是对应于最大值的值。
And i'm trying to get the Maximum Value(12.2, 13.3,..) and the date correspondant to this value of each Category(A, B, C).
要获取与 MAX(value)
相对应的日期
,请尝试以下操作:
SELECT t1.*
FROM myTable AS t1
INNER JOIN
(
SELECT MAX(value) AS MaxV, category
FROM myTable AS t1
GROUP BY category
) AS t2 ON t2.MaxV = t1.value
AND t1.Category = t2.category;
与子查询的连接将确保返回的日期值与Max(value)
相对应,并消除其他值。
关于mysql - SQL 分组依据和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25127858/