Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL分组依据和最大值_Mysql_Sql_Group By_Max - Fatal编程技术网

Mysql SQL分组依据和最大值

Mysql SQL分组依据和最大值,mysql,sql,group-by,max,Mysql,Sql,Group By,Max,我的数据库中有下表: ------------------------------------------- | value | category | date | ------------------------------------------- | 12.2 | A | yyyy-MM-dd HH:mm:ss | ------------------------------------------- | 13.3 | A


我的数据库中有下表:

-------------------------------------------
| 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 | 
-------------------------------------------
我跟踪了这个链接

所以我提出了这个问题:

SELECT MAX(value), category, date FROM myTable GROUP BY category;

但是由于某种原因,我不知道为什么它没有给我我想要的,它给了我一个错误的日期值(日期与最大值不对应))

您可以使用sub-qyery执行此操作

SELECT MAX(t.value), 
    t.category,
    (SELECT m.date FROM myTable as m 
     WHERE m.value = MAX(t.value) AND m.category = t.category) as Category
FROM myTable as t
GROUP BY category;
但出于某种原因,我不知道为什么它没有给我我想要的 寻找,它给了我一个错误的值

在这种情况下,它没有为您提供正确值的原因是:

SELECT MAX(value), category, date FROM myTable GROUP BY category;
也就是说,当您在mysql的
select
子句中包含未包含在
group by
中的列,或者像
date
这样的聚合函数时,mysql会为其选择任意值,因此它会给您错误的值,而不是对应于最大值的值


我试图得到最大值(12.2,13.3,…)和日期 对应于每个类别(A、B、C)的该值

要获取与
MAX(值)
对应的
日期
s,请尝试以下操作:

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)
相对应,并消除其他值


如果您通过将日期列添加到组中会发生什么?是的,它存储为DateTimer,所有日期都相同!!?!?你的运气不好,因为你不知道怎么做才是错的:——(谢谢,我不知道到底是什么错,但你的作品对我来说很好。