MySQL: "order by"内部的 "group by"

标签 mysql group-by

我有一个 names 的 MySQL 表,它由两个字段组成:namerankname 值不是唯一的可以有多个匹配项。

问题:我想选择按 name 分组的记录,但是如果有多个 name,则选择具有最高 rank 的记录code> 应该被采用。

一个例子:

汤姆 2

本 1

本 2

SELECT * FROM names GROUP BY name ORDER BY rank 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/

相关文章:

php - 未定义函数 mysql_connect()

sql - 使用 UNION ALL 分组和排序

python - 对某些列执行 groupby.sum,对其他列执行 groupby.mean

python - 用于排列数据框的聚合函数

php - 如何从3个表中获取数据?

php - 只选择不同的值 - MYSQL

MySQL - 使用波兰语字符进行不区分重音的搜索 - UTF8

php - 我得到复选框值,但如果我不选择其中之一,它不会发送到数据库,尽管它保留记录,但不显示我应该做什么?

python - pandas groupby 有两个键

php - 通过 join 和/或 union 将两个 MySQL 查询简化为一个