我需要使用从" PM1000000000"开始的唯一序列填充列nvarchar(12)。并且每行增加1。没有标识列或主键(编辑)循环使得这个问题非常具有挑战性,因为我发现的大部分示例都使用标识列来循环
我在https://support.microsoft.com/en-us/kb/111401的MSDN上找到了一个示例,示例3,但它没有显示增加一行
任何人都可以帮助我填充此字段,以便我可以将其作为主键吗?注意:这个表有6000万行,但我现在可以接受任何想法,只是让这个工作
答案 0 :(得分:6)
您可以使用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
答案 1 :(得分:0)
您可以使用光标。但这会很慢。我已经将游标用于大约1MM记录的数据表,但不是60MM。你可以在这里找到一个光标的例子。