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

MySQL技术问询:按指定条件筛选含rank列最大值的行

MySQL查询指定条件下rank最大的行

你的原SQL语句存在语法逻辑问题:HAVING MAX(rank)的写法不正确,HAVING子句需要配合聚合条件(比如HAVING MAX(rank) = ...),且在未使用GROUP BY的情况下,这样的写法无法正确筛选目标行。

以下是几种正确的实现方式:

  • 子查询匹配最大rank值
    先通过子查询获取符合条件的最大rank,再筛选对应行,适合存在多个相同最大rank值的场景,会返回所有符合条件的行:

    SELECT *
    FROM mytable
    WHERE apply = 17 AND result > 0
    AND rank = (
        SELECT MAX(rank)
        FROM mytable
        WHERE apply = 17 AND result > 0
    );
    
  • ORDER BY + LIMIT
    如果rank值唯一,可通过排序后取第一行,写法更简洁:

    SELECT *
    FROM mytable
    WHERE apply = 17 AND result > 0
    ORDER BY rank DESC
    LIMIT 1;
    
  • 窗口函数(MySQL 8.0+)
    使用窗口函数给行排名,筛选排名第一的行,同样支持多个相同最大rank的场景:

    SELECT *
    FROM (
        SELECT *,
               RANK() OVER (ORDER BY rank DESC) AS rnk
        FROM mytable
        WHERE apply = 17 AND result > 0
    ) t
    WHERE rnk = 1;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:46:04