问题:
我想根据表格增加一个数字。 例如,如果表包含 行
1 1 2 3 4 4 4 5
mytable列应该根据上面的列中的max(row)+ 1来增加。所以结果应该是这样的:
6 6 7 8 9 9 9 10
这是到目前为止的代码:
OPEN cur
DECLARE @WORKING_ON_ID INT
FETCH NEXT FROM cur INTO @WORKING_ON_ID
WHILE @@FETCH_STATUS = 0
BEGIN
SET @MAX_ID = @MAX_ID + 1
UPDATE
#WorkingTable
SET
ID = @MAX_ID
WHERE
ID = @WORKING_ON_ID
FETCH NEXT FROM cur INTO @WORKING_ON_ID
END
CLOSE cur
DEALLOCATE cur
请你帮我解决这个问题。 谢谢!
答案 0 :(得分:11)
我认为你可以轻松地做到这一点:
UPDATE your_table
SET id = id + (SELECT MAX(id) FROM your_table)
答案 1 :(得分:3)
只取最大值并将其添加到此ID列不是更容易吗? (请记住: ID列不能是标识列,否则更新将失败)
DECLARE @MAXID INT
SELECT @MAXID = MAX(ID) FROM #WorkingTable
UPDATE #WorkingTable SET ID = ID + @MAXID
答案 2 :(得分:2)
请尝试此代码:
Declare @count int = 0
UPDATE table
SET @count = code = @count + 1
答案 3 :(得分:1)
为什么要使用游标?这不会解决你的问题:
DECLARE @MAXID int
SELECT @MAXID=MAX(ID) FROM YourTable
UPDATE YourTable SET ID = ID + @MAXID
答案 4 :(得分:1)
在SQL Server 2005或更高版本中:
WITH cte AS (
SELECT ID, MAX(ID) OVER () AS delta FROM atable
)
UPDATE cte
SET ID = ID + delta;