Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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-选择具有最小值的分组依据_Mysql - Fatal编程技术网

MySQL-选择具有最小值的分组依据

MySQL-选择具有最小值的分组依据,mysql,Mysql,我有一个包含以下数据的简单表格: id | descr | val1 | val2 ======================== 1 | 'aa' | 1 | 5 2 | 'bb' | 2 | 7 3 | 'bb' | 3 | 1 4 | 'bb' | 4 | 19 5 | 'aa' | 5 | 1 6 | 'aa' | 6 | 8 7 | 'bb' | 7 | 11 8 | 'bb' | 8 |

我有一个包含以下数据的简单表格:

id | descr | val1 | val2
========================
1  | 'aa'  |  1   |  5
2  | 'bb'  |  2   |  7
3  | 'bb'  |  3   |  1
4  | 'bb'  |  4   |  19
5  | 'aa'  |  5   |  1
6  | 'aa'  |  6   |  8
7  | 'bb'  |  7   |  11
8  | 'bb'  |  8   |  3
9  | 'aa'  |  9   |  16
10 | 'aa'  |  10  |  9
我想为每个唯一的
descr
选择行,最小值为
val2
。 预期结果:

id | descr | val1 | val2
========================
3  | 'bb'  |  3   |  1
5  | 'aa'  |  5   |  1
我尝试了以下查询:

SELECT *, min(val2) minVal FROM test group by descr
结果与最小值行中的数据无关:

id | descr | val1 | val2 | minVal
==================================
1  | 'aa'  |  1   |  5   |  1
2  | 'bb'  |  2   |  7   |  1
请告知


谢谢

在MySQL中处理此问题的一种标准方法是使用子查询,该子查询标识每个
descr
组的最小
val2
值。MySQL不支持分析函数。然后使用此子查询将
test
的记录限制为您希望显示在结果集中的内容

SELECT t1.*
FROM test t1
INNER JOIN
(
    SELECT descr, MIN(val2) AS min_val2
    FROM test
    GROUP BY descr
) t2
    ON t1.descr = t2.descr AND
       t1.val2  = t2.min_val2
此处演示:


在MySQL中处理此问题的一种标准方法是使用子查询,该子查询为每个
descr
组标识最小
val2
值,MySQL不支持分析函数。然后使用此子查询将
test
的记录限制为您希望显示在结果集中的内容

SELECT t1.*
FROM test t1
INNER JOIN
(
    SELECT descr, MIN(val2) AS min_val2
    FROM test
    GROUP BY descr
) t2
    ON t1.descr = t2.descr AND
       t1.val2  = t2.min_val2
此处演示:


顺便说一句,这是SO上MySQL标签下最常见的问题。偶尔,如下所示,它的回答也是正确的。顺便说一句,这是MySQL标签下最常见的问题。偶尔,如下所示,它的回答也是正确的。