如何选择每个组中具有最大值的第一行?

时间:2019-07-17 20:48:41

标签: mysql sql

我知道如何选择每个组的最大值。但是,当有多个具有相同值的行时,我只想选择第一行,该怎么做?

例如,表格如下:

Group  Name  Value
A A1 20
A A2 20
A A3 10
B B1 20
B B2 30
B B3 30
B B4 10

我想要的结果是

A A1 20
B B2 30

1 个答案:

答案 0 :(得分:1)

没有“第一行”之类的东西,因为SQL表表示无序集。因此,您需要一列来指定“第一”是什么。

您可以轻松地获得一个行。一种方法是相关子查询:

select t.*
from t
where (name, value) = (select name, value
                       from t t2
                       where t2.group = t.group
                       order by t2.value desc
                       limit 1
                      );

在MySQL 8+中,规范的方式将使用row_number()

select t.*
from (select t.*, row_number() over (partition by group order by value desc) as seqnum
      from t
     ) t
where seqnum = 1;
相关问题