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

如何在SQL Server中保留Id列更新50条带前缀的列数据

SQL Server 保留原Id并更新/生成指定格式的UserName和FullName列

情况1:表中已有至少50条数据,直接更新前50条

通过ROW_NUMBER()函数为行分配序号,关联后批量更新目标列:

WITH RankedRows AS (
    SELECT 
        Id,
        UserName,
        FullName,
        ROW_NUMBER() OVER (ORDER BY Id) AS RowNum
    FROM YourTableName -- 替换为你的实际表名
)
UPDATE RankedRows
SET 
    UserName = 'UN' + CAST(RowNum AS VARCHAR(2)),
    FullName = 'FN' + CAST(RowNum AS VARCHAR(2))
WHERE RowNum <= 50;

注:ORDER BY Id保证按Id顺序生成序号,若需按其他逻辑排序,替换Id为对应字段即可。

情况2:表中数据不足50条,需补充数据并统一格式化

如果现有数据少于50条,需先补充缺失行数,同时避免重置Id自增种子(核心是不能用TRUNCATE,改用DELETE或直接插入):

可选步骤:清空现有数据但保留Id种子

若需要清空原有数据但维持Id种子值,用DELETE而非TRUNCATE:

DELETE FROM YourTableName; -- 仅在需要清空数据时执行,DELETE不会重置自增种子

插入50条符合格式的数据

用递归CTE生成1-50的序号,批量插入目标列:

WITH NumberSeries AS (
    SELECT 1 AS Num
    UNION ALL
    SELECT Num + 1 FROM NumberSeries WHERE Num < 50
)
INSERT INTO YourTableName (UserName, FullName) -- 假设Id是自增列,无需指定
SELECT 
    'UN' + CAST(Num AS VARCHAR(2)),
    'FN' + CAST(Num AS VARCHAR(2))
FROM NumberSeries;

注:插入时Id会按当前自增种子自动生成,不会回到初始值;若Id不是自增列,需手动指定Id值并确保不与原有数据冲突。

关键提醒

  • 绝对禁止使用TRUNCATE TABLE:它会直接重置自增列的种子值,导致Id从1开始,完全不符合需求;DELETE仅删除数据,不会修改种子值。
  • 若无需清空原有数据,直接使用情况1的更新语句即可,精准更新前50条数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:45:32