在我的數據庫表中,其中一個字段具有相同的值。我想用隨機數字或字符串來改變這個值,這個數字或字符串被附加到這個字段值以獲得唯一性。如果其中一個字段在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的值即可 –