首页 > 解决方案 > 使用连接字符串+'数字增量'更新多条记录

问题描述

我有一个名为“bbe.case”的表,其中包含以下示例数据:

|---------------------|------------------|------------------|
|            Id       |     Name         |      Phone       |
|---------------------|------------------|------------------|
|          3455       |      Johny       |       `123456    |
|---------------------|------------------|------------------|
|          3457       |      Dora        |       342754     |
|---------------------|------------------|------------------|

而不是在 Name 列中使用真实姓名,我想更改为“Name 1”、“Name 2”、“Name 3”...“Name 1003”等等,如下所示:

|---------------------|------------------|------------------|
|           Id        |     Name         |      Phone       |
|---------------------|------------------|------------------|
|          3455       |      Name 1      |       123456     |
|---------------------|------------------|------------------|
|          3457       |      Name 2      |       342754     |
|---------------------|------------------|------------------|

'
'
'
|---------------------|------------------|------------------|
|          4453       |      Name 999    |       12345      |
|---------------------|------------------|------------------|
|          4454       |      Name 1000   |       345754     |
|---------------------|------------------|------------------|

感谢您对此的任何指导。

标签: sql-servertsql

解决方案


我希望这个样本符合您的要求:

CREATE TABLE  #TempTbl (
[Id] int,
[Name] nvarchar(255),
[Phone] nvarchar(255)    
)

INSERT INTO #TempTbl
VALUES 
    (20, 'Johny', '514545'),
    (30, 'Hassan', '514545'),
    (40, 'Yahya', '514545'),
    (50, 'Waleed', '514545'),
    (60, 'Shreem', '514545')


UPDATE t
SET t.[Name] = d.[NewName]
FROM #TempTbl t JOIN (
        SELECT t.[Id], CONCAT('Name ', ROW_NUMBER() OVER (ORDER BY [Id])) AS 'NewName', t.Phone
        FROM #TempTbl t
                     ) d ON t.[Id] = d.[Id]


SELECT * FROM #TempTbl

推荐阅读