我们如何在SQL Server中的自动生成列中重新生成顺序用户ID?
我有一个数据库,其中Emp_id
是一个自动生成的列。我删除了这么多数据,以便Emp_id
按顺序排列,即
12
14
21
22
23
56...
所以现在我希望Emp_id
重新编号并变成一个序列,即
1
2
3
4
5
6.....
答案 0 :(得分:0)
当该列是SQL Server中的INT IDENTITY
时,您无法更新表中包含的值。
如果这些值已经以其他方式“自动生成”,那么您可以执行以下操作:
;WITH RegeneratedValues AS
(
SELECT
Emp_ID,
NewID = ROW_NUMBER() OVER (ORDER BY Emp_ID)
FROM
dbo.YourTable
)
UPDATE dbo.YourTable
SET Emp_ID = regen.NewID
FROM RegeneratedValues regen
WHERE dbo.YourTable.Emp_ID = regen.Emp_ID
CTE(公用表表达式)选择“旧”Emp_ID
值,并使用Emp_ID
排名函数按ROW_NUMBER()
列生成新的连续数字。然后,UPDATE
语句会获取这两个值,并根据这些值更新您的表格 - 将新的,重新生成的,连续的,无间隙的数字分配给Emp_ID