Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server:ATUALIZE uma tabela usando ORDER BY


Não.

Não é uma maneira 100% suportada documentada. Há uma abordagem às vezes usada para calcular totais em execução chamada "atualização peculiar" que sugere que ela pode ser atualizada na ordem do índice clusterizado se certas condições forem atendidas, mas até onde eu sei, isso depende completamente da observação empírica e não de qualquer garantia.

Mas em qual versão do SQL Server você está? Se SQL2005+, você poderá fazer algo com row_number e um CTE (você pode atualizar o CTE)
With cte As
(
SELECT id,Number,
ROW_NUMBER() OVER (ORDER BY id DESC) AS RN
FROM Test
)
UPDATE cte SET Number=RN