Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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_Group By_Max_Self Join - Fatal编程技术网

Mysql 基于列的最大值选择相同的行,并在最大值等于时仅选择其中一行

Mysql 基于列的最大值选择相同的行,并在最大值等于时仅选择其中一行,mysql,group-by,max,self-join,Mysql,Group By,Max,Self Join,我有一个名为“demo”的表,其中包含以下数据: Name Group MX A XY 1 B YZ 1 B XY 2 C YZ 5 C XY 3 D YZ 2 E YZ 1 E XY 1 它工作得很有趣,但当两个名称相同时,它会显示如下两个名称: Name Group MX A XY

我有一个名为“demo”的表,其中包含以下数据:

Name Group MX A XY 1 B YZ 1 B XY 2 C YZ 5 C XY 3 D YZ 2 E YZ 1 E XY 1 它工作得很有趣,但当两个名称相同时,它会显示如下两个名称:

Name Group MX A XY 1 B XY 2 C YZ 5 D YZ 2 E YZ 1 E XY 1 名称组MX A XY 1 B XY 2 cyz5 D YZ 2 E YZ 1 E XY 1
您推荐什么方法?

要避免名称和MX相等的两个值,您可以使用(假)聚合函数和分组方式,例如:

SELECT demo.Name, min(demo.Group), demo.MX
    FROM ( 
        SELECT Name, MAX(MX) AS max_values 
        FROM demo
        GROUP BY Name
     ) demo2
INNER JOIN demo ON demo.Name = demo2.Name AND demo.MX = demo2.max_values
GROUP BY demo.Name, demo.MX
见: Name Group MX A XY 1 B XY 2 C YZ 5 D YZ 2 E YZ 1 E XY 1
SELECT demo.Name, min(demo.Group), demo.MX
    FROM ( 
        SELECT Name, MAX(MX) AS max_values 
        FROM demo
        GROUP BY Name
     ) demo2
INNER JOIN demo ON demo.Name = demo2.Name AND demo.MX = demo2.max_values
GROUP BY demo.Name, demo.MX