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

如何批量更新SQL Server表中bill_no字段从1开始重新编号?

批量将SQL Server表的bill_no字段从1开始重新编号

如果要一次性完成字段从1开始的连续编号,不管是覆盖全表还是仅替换193及后续序列,都可以用ROW_NUMBER()窗口函数结合CTE(公共表表达式)实现,效率远高于逐条更新。

场景1:给全表bill_no从1重新编号

如果需要所有行的bill_no都从1开始连续排列,先确定一个唯一排序依据(比如主键、记录创建时间,保证顺序稳定),执行以下语句:

WITH NumberedRecords AS (
    SELECT 
        bill_no,
        -- 替换ORDER BY后的字段为你实际需要的排序依据,比如create_time或主键id
        ROW_NUMBER() OVER (ORDER BY id) AS new_bill_no
    FROM tbl_sales_record
)
UPDATE NumberedRecords
SET bill_no = new_bill_no;

场景2:仅替换原bill_no从193开始的序列

如果只需要把原有值为193、194、195...的行改成1、2、3...,添加WHERE条件筛选目标行即可:

WITH NumberedRecords AS (
    SELECT 
        bill_no,
        -- 按原有bill_no排序,保证193对应1,194对应2,以此类推
        ROW_NUMBER() OVER (ORDER BY bill_no) AS new_bill_no
    FROM tbl_sales_record
    WHERE bill_no >= 193
)
UPDATE NumberedRecords
SET bill_no = new_bill_no;

注意事项

  • 执行前务必备份数据,避免误操作导致数据丢失。
  • 如果bill_no是主键或有唯一约束,确保ORDER BY的字段能生成唯一排序,避免新编号重复。
  • 若表存在外键关联bill_no,需先禁用外键约束或同步更新关联表,否则更新会失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:40:42