You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL MAX函数使用问题:获取matchday=8的最大total及对应idPlayer

解决MySQL MAX函数关联对应列的问题

嘿,这个问题我之前也踩过坑,特别典型!咱们先搞清楚为什么你原来的查询会出错:

当你执行 SELECT MAX(total), idPlayer FROM MD_board WHERE matchday=8 时,MySQL的规则是:使用聚合函数(比如MAX)但没有对非聚合列(这里是idPlayer)做GROUP BY的话,数据库会随机返回一个满足WHERE条件的idPlayer值,而不是和最大值对应的那个,所以才会出现max(total)正确但idPlayer不对的情况。

给你两个简单易懂的解决方案,完全不用复杂查询:

方案一:子查询先拿最大值,再匹配对应行

这个逻辑最直观,先找到matchday=8的最大total,再找出所有total等于这个值的行:

SELECT idPlayer, total
FROM MD_board
WHERE matchday = 8 
  AND total = (SELECT MAX(total) FROM MD_board WHERE matchday = 8);

如果有多个玩家在matchday=8时都拿到了相同的最大total,这个查询会返回所有符合条件的玩家,很实用。

方案二:排序后取第一行

把matchday=8的所有记录按total从大到小排序,取第一行就是你要的结果:

SELECT idPlayer, total
FROM MD_board
WHERE matchday = 8
ORDER BY total DESC
LIMIT 1;

这个写法更简洁,适合只需要一个结果(比如确定只有一个最大值的情况)的场景。

内容的提问来源于stack exchange,提问作者user9208388

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:57:18