SQL увеличивает число - PullRequest
       4

SQL увеличивает число

7 голосов
/ 06 декабря 2011

Проблема:

Я хочу увеличить число на основе таблицы.Так, например, если таблица содержит строку

1 1 2 3 4 4 4 5

, mytable столбец должен увеличиваться в зависимости от этого, принимая значение max (строка) + 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 ]

11 голосов
/ 06 декабря 2011

Я думаю, вы могли бы сделать это легко с помощью:

UPDATE your_table
SET id = id + (SELECT MAX(id) FROM your_table)
3 голосов
/ 06 декабря 2011

Не проще ли взять максимум и добавить его в этот столбец идентификаторов?(Помните: столбец ID не может быть столбцом идентификаторов , в противном случае обновление не будет выполнено)

DECLARE @MAXID INT
SELECT @MAXID = MAX(ID) FROM #WorkingTable
UPDATE #WorkingTable SET ID = ID + @MAXID
2 голосов
/ 03 декабря 2013

Пожалуйста, попробуйте этот код:

Declare @count int = 0
UPDATE table
SET @count = code = @count + 1
1 голос
/ 06 декабря 2011

В SQL Server 2005 или более поздней версии:

WITH cte AS (
  SELECT ID, MAX(ID) OVER () AS delta FROM atable
)
UPDATE cte
SET ID = ID + delta;
1 голос
/ 06 декабря 2011

Зачем использовать курсор? Не решит ли это и вашу проблему:

DECLARE @MAXID int
SELECT @MAXID=MAX(ID) FROM YourTable
UPDATE YourTable SET ID = ID + @MAXID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...