use*_*150 1 t-sql sql-server sql-server-2005
我需要使用从"PM1000000000"开始的唯一序列填充列nvarchar(12),并为每行增加1.没有标识列或主键(编辑)循环,这使得这个问题非常具有挑战性,因为我发现的大多数示例都使用标识列来循环
我在MSDN上的https://support.microsoft.com/en-us/kb/111401上找到了一个示例,示例3,但它没有显示增加一行
任何人都可以帮助我填充这个字段,以便我可以将其作为主键吗?注意:这个表有6000万行,但我现在愿意接受任何想法才能使这个工作正常
你可以使用ROW_NUMBER():
SELECT
ID = 'PM' + CONVERT(NVARCHAR(10), ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) + 1000000000 - 1)
FROM <YourTable>
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |