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

SQL查询问题:获取NUMBER列最大值及对应ID

解决SQL获取最大值对应ID的问题

你的原语句问题出在GROUP BY ID, MAXNUMB:

  • MAXNUMB是MAX(NUMBER)的别名,在分组逻辑里,每个ID对应的MAX(NUMBER)其实就是该行的NUMBER值(单条数据的最大值就是自身),所以最终会按每个ID和对应的NUMBER分组,相当于每行单独成组,自然返回所有条目。

下面是几种正确的写法:

方法1:子查询获取最大值后关联

这种写法逻辑直观,适配大多数SQL数据库:

SELECT ID, NUMBER AS MAXNUMB
FROM TABLE1
WHERE NUMBER = (SELECT MAX(NUMBER) FROM TABLE1);

方法2:使用窗口函数(推荐)

如果需要处理多个行同为最大值的场景,窗口函数更灵活:

  • 用ROW_NUMBER()会只返回一行最大值(若存在多个最大值,随机选取一行):
SELECT ID, NUMBER AS MAXNUMB
FROM (
    SELECT ID, NUMBER,
           ROW_NUMBER() OVER (ORDER BY NUMBER DESC) AS row_rank
    FROM TABLE1
) ranked_table
WHERE row_rank = 1;
  • 用RANK()会返回所有最大值对应的行:
SELECT ID, NUMBER AS MAXNUMB
FROM (
    SELECT ID, NUMBER,
           RANK() OVER (ORDER BY NUMBER DESC) AS num_rank
    FROM TABLE1
) ranked_table
WHERE num_rank = 1;

内容的提问来源于stack exchange,提问作者Txni.26

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:00:48