我知道如何选择每个组的最大值。但是,当有多个具有相同值的行时,我只想选择第一行,该怎么做?
例如,表格如下:
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
答案 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;