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

如何编写Oracle SQL实现user_table分组后取slno最大值对应记录

Oracle 按分组保留最大slno记录查询方案

以下是两种可直接使用的实现方式:

方式1:窗口函数实现(推荐,性能更优)

通过ROW_NUMBER()窗口函数对非slno字段分组,每组内按slno倒序排序后取第一条即可:

SELECT slno, col2, col3, col4
FROM (
    SELECT 
        slno,
        col2, col3, col4, -- 替换为你表中除slno外的实际字段名
        ROW_NUMBER() OVER (PARTITION BY col2, col3, col4 ORDER BY slno DESC) rn
    FROM user_table
) t
WHERE rn = 1;

说明:PARTITION BY后填写所有除slno外需要值一致的分组字段,ORDER BY slno DESC实现同组内slno从大到小排序,rn=1取每组slno最大的记录。

方式2:分组关联实现

先分组查询出每组最大的slno,再关联原表得到完整记录:

SELECT a.*
FROM user_table a
INNER JOIN (
    SELECT MAX(slno) max_slno, col2, col3, col4 -- 替换为你表中除slno外的实际字段名
    FROM user_table
    GROUP BY col2, col3, col4
) b 
ON a.slno = b.max_slno 
AND a.col2 = b.col2 
AND a.col3 = b.col3 
AND a.col4 = b.col4;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:48:05