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

Oracle SQL查询:按VERSION_ID前缀分组取最小ID的唯一结果

Oracle SQL:按版本前缀分组并选取每组最小ID记录

原始表数据

IDVERSION_ID
111ABC1234.1
222ABC1234.2
333ABC12345.1
444ABC12345.2
555ABC123456.1
666ABC123457.1

需求说明

筛选VERSION_ID匹配ABC%.%格式的记录,按VERSION_ID中.分隔的前缀(例如ABC1234)分组,保留每组中ID最小的条目。

实现SQL语句

SELECT ID, VERSION_ID
FROM (
    SELECT 
        ID, 
        VERSION_ID,
        ROW_NUMBER() OVER (
            PARTITION BY SUBSTR(VERSION_ID, 1, INSTR(VERSION_ID, '.') - 1)
            ORDER BY ID ASC
        ) AS rn
    FROM your_table_name -- 替换为实际表名
    WHERE VERSION_ID LIKE 'ABC%.%'
) t
WHERE rn = 1;

语句说明

  1. 筛选条件:通过WHERE VERSION_ID LIKE 'ABC%.%'过滤出符合格式的目标记录;
  2. 分组依据:用SUBSTR(VERSION_ID, 1, INSTR(VERSION_ID, '.') - 1)截取VERSION_ID中.之前的前缀作为分组字段;
  3. 取最小ID:借助ROW_NUMBER()窗口函数,在每个分组内按ID升序排序并标记行号,最后筛选行号为1的记录,即为每组ID最小的条目。

补充:如果版本号格式固定(仅含一个.),也可以用正则表达式函数简化前缀截取:

PARTITION BY REGEXP_SUBSTR(VERSION_ID, '^[^.]+')

执行结果

IDVERSION_ID
111ABC1234.1
333ABC12345.1
555ABC123456.1
666ABC123457.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:01:29