SQL增加一个数字

时间:2011-12-06 14:30:54

标签: sql tsql

问题:

我想根据表格增加一个数字。 例如,如果表包含 行

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

请你帮我解决这个问题。 谢谢!

5 个答案:

答案 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;