我有一个名为“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
I want unique names based on 'MX' maximum value, when the 'MX' for two identical names are equal I need one of them as illustrated below:
Name Group MX A XY 1 B XY 2 C YZ 5 D YZ 2 E YZ 1 -- or this {E XY 1}
This is my query:
SELECT demo.Name, 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
它工作得很好,但是当两个名字相同时,它显示如下:
Name Group MX A XY 1 B XY 2 C YZ 5 D YZ 2 E YZ 1 E XY 1
您推荐哪些方法?
最佳答案
为了避免 Name 和 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
关于mysql - 根据一列的最大值选择相同的行,当最大值等于时只选择其中一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46239869/