在我的数据库表中,其中一个字段具有相同的值。我想用随机数字或字符串来改变这个值,这个数字或字符串被附加到这个字段值以获得唯一性。如果其中一个字段在SQL中具有多个相同值,如何更新值
样本数据 这里'Ma' has 5 records
等等。我想改变名称Ma01, Ma02
等
Id Name Count
1 Ma 5
2 Ga 6
3 Gu 5
如何与SQL
查询
在我的数据库表中,其中一个字段具有相同的值。我想用随机数字或字符串来改变这个值,这个数字或字符串被附加到这个字段值以获得唯一性。如果其中一个字段在SQL中具有多个相同值,如何更新值
样本数据 这里'Ma' has 5 records
等等。我想改变名称Ma01, Ma02
等
Id Name Count
1 Ma 5
2 Ga 6
3 Gu 5
如何与SQL
查询
试试这个
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
做试试这个:
Select Name + convert(varchar(2), row_number()over(partition by Name order by Name))
From tablename
你只要试试这个。
Declare @i int = 1
update yourtable
set ID = @i , @i = @i + 1
选择基于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
请给样品了解得更清楚,因为你给了你的专栏。 – Ajay2707
我已经为您更新了与您使用的列名相同的代码。只需用你自己的表来替换tablename的值即可 –