我正在尝试使用下一个数字更新表中的列。
这是一个例子:
表格1
User1 100
User2 101
User3 102
User4 NULL
User5 NULL
User6 NULL
Run Code Online (Sandbox Code Playgroud)
我需要它去
User1 100
User2 101
User3 102
User4 103
User5 104
User6 105
Run Code Online (Sandbox Code Playgroud)
我尝试过一些事情,例如:
update Table1
set EmpID = MAX(empid)+1
where UserName = null
Run Code Online (Sandbox Code Playgroud)
但这只会将所有空值设置为 103。
如果使用MS SQL Server,那么您可以做的一个技巧是您可以更新一行并在同一个 go 中设置变量,然后重用更新的变量。
为了说明这一点,请考虑以下几点:
DECLARE @NextID INT
SET @NextID = 102
UPDATE Table1
SET @NextID = EmpID = @NextID + 1
WHERE EmpID IS NULL
Run Code Online (Sandbox Code Playgroud)
这将初始值设置为@NextId。您可以按照适合您的逻辑的方式填充它。
然后,它对 Table1 运行更新,并将 @NextId + 1 分配给 EmpID,作为更新的第一行,在本例中为 103。
然后,@NextId 将更新为刚刚用于分配给 EmpId 的值 - 再次为 103。依此类推,因此后续行将获得 104,然后是 105,依此类推。
这种一次性更新变量和行值的方法非常有用,并且只需对您的特定问题进行一些修改,它就应该适用。