我们如何在 SQL Server 的自动生成列中重新生成顺序用户 ID?
我有一个数据库,其中Emp_id
是一个自动生成的列。我已经删除了这么多数据,以便Emp_id
以非序列顺序出现,即
12
14
21
22
23
56...
所以现在我想Emp_id
重新编号并变成一个序列,即
1
2
3
4
5
6.....
我们如何在 SQL Server 的自动生成列中重新生成顺序用户 ID?
我有一个数据库,其中Emp_id
是一个自动生成的列。我已经删除了这么多数据,以便Emp_id
以非序列顺序出现,即
12
14
21
22
23
56...
所以现在我想Emp_id
重新编号并变成一个序列,即
1
2
3
4
5
6.....
当该列INT IDENTITY
在 SQL Server 中时,您无法更新表中包含的值。
如果这些值已通过其他方式“自动生成”,那么您可以执行以下操作:
;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