Select 基于列最大值的相同行,当最大值等于时只选择其中一行

Select identical rows based on max values of a column and only choose one of rows when max equals

我有一个名为 'demo' 的 table,具有以下数据:

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

我想要基于 'MX' 最大值的唯一名称,当两个相同名称的 'MX' 相等时,我需要其中之一,如下图所示:

Name    Group   MX
A        XY     1
B        XY     2
C        YZ     5
D        YZ     2
E        YZ     1   -- or this {E   XY   1}

这是我的查询:

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