我有一个MySQL表names,它由两个字段组成:name和rank.该name值不唯一可以有多个匹配.
问题:我想选择分组的记录,name但是如果有多个记录,则应该选择name具有最高记录的记录rank.
一个例子:
汤姆2
本1
本2
SELECT*FROM
namesGROUP BYnameORDER BYrankDESC
通常会返回:
汤姆2
本1
我需要:
汤姆2
本2
由于有两个Bens,但第二个具有更高的等级.
似乎,MySQL分组采用了名字而忽略了其余部分.
如何在"分组依据"中订购记录,以便我可以说应该采取哪条记录,如果有多条记录相同name?
您需要一个名为的聚合函数max:
select name, max(rank)
from names
group by name;
Run Code Online (Sandbox Code Playgroud)
这样,您将检索所有不同的名称,每个名称与其最大等级相关联.
对我来说,它已经奏效了:
要进入组内的最后一行:
select * from
( select name, rank from names order by rank desc ) as a
group by name
Run Code Online (Sandbox Code Playgroud)