我有一张包含大量数据的表格。我想添加额外的列id
并将其用作主键。使用从1
到row count
目前我正在使用游标并逐个更新行。这需要几个小时。有没有办法更快地做到这一点?
谢谢
答案 0 :(得分:112)
就这样做:
ALTER TABLE dbo.YourTable
ADD ID INT IDENTITY(1,1)
并且将创建列并自动填充integer
值(正如Aaron Bertrand在他的评论中指出的那样 - 您无法控制哪一行获得什么值 - SQL Server在其上处理该值拥有,你不能影响它。但所有行都将获得有效的int
值 - 不会有任何NULL
或重复值。
接下来,将其设置为主键:
ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY(ID)
答案 1 :(得分:1)
如果要按特定顺序添加行号,可以将ROW_NUMBER()放入新表中,然后删除原始表。但是,根据表的大小和其他业务限制,您可能不想这样做。这也意味着存在一种逻辑,您可以根据该逻辑对表进行排序。
SELECT ROW_NUMBER() OVER (ORDER BY COL1, COL2, COL3, ETC.) AS ID, *
INTO NEW_TABLE
FROM ORIGINAL_TABLE