2016-07-25 75 views

回答

2

试试这个

UPDATE TBL 
SET Name = A.Name 
FROM 
(
    SELECT 
     Id, 
     Name + CAST(ROW_NUMBER() OVER (PARTITION BY Name ORDER BY (SELECT NULL)) AS NVARCHAR(500)) AS NAME, 
     Count 
    FROM 
     TBL 
    WHERE 
     NAME IN 
     (
      SELECT T.NAME FROM TBL T 
      GROUP BY T.NAME 
      HAVING COUNT(1) > 1 
     ) 

) A 
WHERE 
    TBL.Id = A.ID 
0

做试试这个:

Select Name + convert(varchar(2), row_number()over(partition by Name order by Name)) 
From tablename 
0

你只要试试这个。

Declare @i int = 1 

update yourtable 
set ID = @i , @i = @i + 1 
0

选择基于NEER代码的代码,添加前导零,在MSSQL数据库上测试。

SELECT 
    Id, 
    Name, 
    Name + RIGHT('00'+CAST(ROW_NUMBER() OVER (PARTITION BY Name ORDER BY (SELECT Name)) AS NVARCHAR(MAX)),2) AS Updatedname 

FROM 
    tablename 
WHERE 
    Name IN 
    (
     SELECT T.NameFROM tablename T 
     GROUP BY T.Name 
     HAVING COUNT(Name) > 1 
    ) 
GROUP BY Name,Id 
ORDER BY Name 
+0

请给样品了解得更清楚,因为你给了你的专栏。 – Ajay2707

+0

我已经为您更新了与您使用的列名相同的代码。只需用你自己的表来替换tablename的值即可 –

相关问题