Mysql 基于列的最大值选择相同的行,并在最大值等于时仅选择其中一行
我有一个名为“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 1Mysql 基于列的最大值选择相同的行,并在最大值等于时仅选择其中一行,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
您推荐什么方法?要避免名称和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