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

如何用SQL查询每个唯一name对应campagna最大值所在行的指定字段

该需求完全可以通过SQL实现,以下是两种常见的适配不同数据库版本的实现方案:

方案1:窗口函数实现(兼容 MySQL 8.0+、PostgreSQL、SQL Server 等主流新版数据库)

使用ROW_NUMBER()窗口函数是最简洁通用的实现方式,逻辑清晰易维护:

SELECT name, campagna, valore
FROM (
    SELECT
        name,
        campagna,
        valore,
        -- 按name分组,组内按campagna倒序排序,最大值对应行的排序编号为1
        ROW_NUMBER() OVER(PARTITION BY name ORDER BY campagna DESC) AS rank_num
    FROM 你的实际表名
) AS temp_table
WHERE rank_num = 1;

如果同一个name存在多条campagna为相同最大值的记录,需要全部返回时,将ROW_NUMBER()替换为RANK()即可。

方案2:关联子查询实现(兼容 MySQL 5.x 等不支持窗口函数的低版本数据库)

如果你使用的数据库版本不支持窗口函数,可以通过分组后关联匹配的方式实现:

SELECT t1.name, t1.campagna, t1.valore
FROM 你的实际表名 t1
INNER JOIN (
    -- 先查询每个name对应的最大campagna值
    SELECT name, MAX(campagna) AS max_camp
    FROM 你的实际表名
    GROUP BY name
) AS t2 ON t1.name = t2.name AND t1.campagna = t2.max_camp;

以上两种方案执行后都可以得到你预期的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:57:03