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

DB2数据库删除记录后重新更新文件序号的技术咨询

DB2 删除记录后重新编排行号的正确SQL

原SQL存在的问题

  • ORDER BY G TLINE 属于拼写错误,应为 ORDER BY gtline
  • JOIN条件 b.gtline <> a.gtline 逻辑错误,会导致记录匹配混乱,无法完成正确的序号更新
  • 若需按gttran分组编排序号,原SQL缺少PARTITION BY gttran,会导致全局生成序号,打乱不同分组的编号逻辑

修正后的SQL(按gttran分组重新编号)

如果需要在每个gttran分组内,按原gtline的顺序重新生成连续序号,使用以下语句:

WITH RowNumbers AS (
    SELECT
        ROW_NUMBER() OVER (PARTITION BY gttran ORDER BY gtline) AS row_num,
        gtline,
        gttran
    FROM GPOTRSP
)
UPDATE GPOTRSP b
SET b.gtline = a.row_num
FROM RowNumbers a
WHERE b.gttran = a.gttran
  AND b.gtline = a.gtline;

关键说明

  1. PARTITION BY gttran:保证每个gttran分组独立生成序号,不同分组的编号互不干扰
  2. ORDER BY gtline:按照原序号的顺序重新编排,确保新序号连续且符合原有排序逻辑(若需按其他字段排序,替换为对应字段即可)
  3. 精准关联条件:通过b.gttran = a.gttran AND b.gtline = a.gtline匹配每条记录,将重新生成的row_num赋值给gtline

全局重新编号(无分组)

如果不需要按gttran分组,直接对全表记录重新编号,去掉PARTITION BY gttran即可:

WITH RowNumbers AS (
    SELECT
        ROW_NUMBER() OVER (ORDER BY gtline) AS row_num,
        gtline,
        gttran
    FROM GPOTRSP
)
UPDATE GPOTRSP b
SET b.gtline = a.row_num
FROM RowNumbers a
WHERE b.gttran = a.gttran
  AND b.gtline = a.gtline;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:03:11