使用顺序标识符填充新的 ID 列

Populate new ID Column with Sequential Identifiers

我需要使用从 "PM1000000000" 开始的唯一序列填充列 nvarchar(12) 并且每行递增 1。没有标识列或主键(编辑)可以循环,这使得这个问题非常具有挑战性,因为我发现的大多数示例都使用标识列来循环

我在 https://support.microsoft.com/en-us/kb/111401 的 MSDN 上找到了示例 3,但它没有显示递增行

任何人都可以帮我填充这个字段,以便我可以将其设为主键吗?注意:这个 table 有 6000 万行,但我现在对任何想法都持开放态度,以使其正常工作

您可以使用光标。不过,它会很慢。我已经将游标用于具有 ~1MM 记录但不是 60MM 的数据表。您可以在此处找到游标示例。

https://msdn.microsoft.com/en-us/library/ms180169.aspx

您可以使用 ROW_NUMBER():

SELECT
    ID = 'PM' + CONVERT(NVARCHAR(10), ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) + 1000000000 - 1)
FROM <YourTable>

UPDATE声明

;WITH Cte AS(
    SELECT *,
        RN = 'PM' + CONVERT(NVARCHAR(10), ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) + 1000000000 - 1)
    FROM TestData
)
UPDATE Cte SET ID = RN