【发布时间】:2021-07-14 14:01:59
【问题描述】:
我已经阅读了大量类似的问题,但没有人回答我的问题。
我想选择整行,其中包含每个组的其中一列的最大值。
SELECT * FROM (
SELECT t1.* FROM `t1` JOIN `t2` ON t2.id=t1.raceId ORDER BY t1.points DESC
) AS new GROUP BY new.athleteId ORDER BY new.points DESC
这很有效,我为每个运动员提供了一行,但它显示的行只是数据库中最早的行,而不是最高分的行。
单独的子查询以正确的顺序显示所有行,但是当我尝试对它们进行分组时,它仍然取最早的行并忽略排序。
我可以检索每个分组的最大分数,但其余的行信息仍然来自最早的条目。
【问题讨论】:
-
你的表中点的数据类型是什么?与查询共享示例数据和表结构,并共享预期输出。此外,不需要在内部查询中排序。
-
MySQL 5.7.5 及更高版本还允许在启用 ONLY_FULL_GROUP_BY SQL 模式时未在 GROUP BY 子句中命名的非聚合列,前提是该列仅限于单个值 dev.mysql.com/doc/refman/5.7/en/group-by-handling.html。我不确定我是否看到您将限制为单个值,因此 group by 是“混淆的”但是,它应该是一个错误;所以我怀疑您没有启用 ONLY_FULL GROUP BY 或使用的是允许此操作的先前版本。