我有一个 names
的 MySQL 表,它由两个字段组成:name
和 rank
。 name
值不是唯一的可以有多个匹配项。
问题:我想选择按 name
分组的记录,但是如果有多个 name
,则选择具有最高 rank
的记录code> 应该被采用。
一个例子:
汤姆 2
本 1
本 2
SELECT * FROM
names
GROUP BYname
ORDER BYrank
DESC
通常返回:
汤姆 2
本 1
我需要:
汤姆 2
本 2
因为有两个本,但是第二个的等级更高。
看来,MySQL 分组采用第一个名称而忽略其余部分。
如果有多个具有相同名称
的记录,我如何在“分组依据”中对记录进行排序,以便我可以说出应该采用哪条记录?
最佳答案
你需要一个 aggregate function称为max
:
select name, max(rank)
from names
group by name;
这样您将检索所有不同的名称,每个名称都与其最高排名相关联。
关于MySQL: "order by"内部的 "group by",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5362160/