我有一个names
的MySQL表格,其中包含两个字段:name
和rank
。 name
值不唯一可以有多个匹配。
问题:我想选择按name
分组的记录,但如果有多个name
,则应选择rank
最高的记录。
一个例子:
汤姆2
Ben 1
本2
SELECT * FROM
names
GROUP BYname
ORDER BYrank
DESC
通常会返回:
汤姆2
Ben 1
我需要:
汤姆2
本2
由于有两个Bens,但第二个具有更高的等级。
似乎MySQL分组采用了名字而忽略了其余部分。
如何在“分组依据”中订购记录,以便我可以说明应该采用哪条记录,如果有多条记录具有相同的name
?
答案 0 :(得分:8)
您需要一个名为max
的{{3}}:
select name, max(rank)
from names
group by name;
通过这种方式,您将检索所有不同的名称,每个名称与其最大等级相关联。
答案 1 :(得分:5)
对我而言,它已经奏效了:
获取组内的最后一行:
select * from
( select name, rank from names order by rank desc ) as a
group by name
答案 2 :(得分:2)
使用max()
:
select name,
max(rank)
from names
group by name
order by max(rank) desc