id без автоинкремент

Есть таблица в ms sql, назовем ее content, есть 3 столбца (id, com1, com2), в таблице не подключен автоинкремент и не будет подключен. В результате добавление и удаления строк появилась необходимость заново пронумеровать все строки, то есть присвоить id 1,2,3,4...и т.д. не подключая автоинкремент. Есть ли возможность это сделать запросом ms sql?


Ответы (2 шт):

Автор решения: Sergey Moiseenko

Можете создать последовательность (https://sql-ex.ru/blogs/?/ModernizaciJa_vashego_koda_T-SQL_obekt_Sequence.html):

CREATE sequence seq1 start
    WITH 1 increment BY 1;

а потом обновить:

update content set id= NEXT value FOR seq1;
→ Ссылка
Автор решения: PashaPash

Пронумеруйте на основе старых id и сделайте апдейт на основе селекта:

update x
set id = new_id
from (
    select id, ROW_NUMBER() over (order by id) AS new_id from content
    ) x
→ Ссылка