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

如何编写无需循环获取每个mrID最大ID对应行的SQL语句?

解决方案:获取每个mrID对应最大ID的整行数据(无需WHILE循环)

嘿,这事儿好办,不用WHILE循环的话,有两种简洁高效的方法能搞定你的需求,我给你详细说说:

方法一:使用窗口函数直接标记并筛选

这种方法利用窗口函数一次性给每行带上对应mrID组的最大ID,再筛选匹配的行,代码简洁且执行效率高:

WITH RankedData AS (
    SELECT 
        *,
        -- 给每个mrID分组的行都带上该组的最大ID值
        MAX(ID) OVER(PARTITION BY mrID) AS MaxIDPerMrID
    FROM Final_Table_2
)
SELECT 
    ID, mrID, mrSEQUENCE, mrNEWFIELDVALUE, mrTIMESTAMP, mrUSERID
FROM RankedData
-- 筛选出ID等于该组最大ID的行
WHERE ID = MaxIDPerMrID;

方法二:子查询聚合+关联原表

如果你对窗口函数不太熟悉,这种基于分组聚合再关联的方式逻辑更直观:

SELECT t.*
FROM Final_Table_2 t
INNER JOIN (
    -- 先按mrID分组,找出每个组的最大ID
    SELECT mrID, MAX(ID) AS MaxID
    FROM Final_Table_2
    GROUP BY mrID
) max_ids ON t.mrID = max_ids.mrID AND t.ID = max_ids.MaxID;

示例结果说明

针对你提供的测试数据,两种方法都会返回以下结果:

  • 对于mrID=9998,最大ID是6,对应行:6 9998 36275 Closed NULL cabacki
  • 对于mrID=9999,最大ID是3,对应行:3 9999 35849 Closed NULL kabacki

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:11:08