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

Oracle数据库下相同ID对应相同行号的重复行编号实现咨询

Oracle实现相同ID对应统一行号的可行方案

方案1:使用DENSE_RANK分析函数(首推)

这是最简洁高效的实现方式,Oracle 8i及以上版本都支持,生成的行号连续递增,相同ID的行号完全一致。
示例代码:

SELECT
  id,
  -- 其他业务字段
  DENSE_RANK() OVER(ORDER BY id) AS row_num
FROM 你的表名;

方案2:使用RANK分析函数

如果接受非连续行号(比如3条ID=1的记录行号都是1,下一个不同ID的行号直接是4),可以用该方案:

SELECT
  id,
  -- 其他业务字段
  RANK() OVER(ORDER BY id) AS row_num
FROM 你的表名;

方案3:去重ID关联赋值(兼容超老版本)

如果使用的是不支持分析函数的极低版本Oracle,可以通过先给去重ID编号再关联原表的方式实现:

SELECT
  t1.id,
  -- t1的其他业务字段
  t2.row_num
FROM 你的表名 t1
JOIN (
  SELECT 
    id,
    ROWNUM AS row_num
  FROM (SELECT DISTINCT id FROM 你的表名 ORDER BY id)
) t2 ON t1.id = t2.id;

方案选型建议

  • 无特殊要求优先选方案1,性能最优写法最简单,符合绝大多数业务场景的编号需求
  • 仅需要行号和实际记录行数对齐时选方案2
  • 仅8i以前的超老版本Oracle用方案3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:48:02