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

Gerar um SQL de atualização para alterar a ordem de um item?


Você nem precisa do ID parâmetro.
UPDATE
  yourTable
SET
  Order = (CASE WHEN     Order = @oldOrder THEN @newOrder
                WHEN @newOrder > @oldOrder THEN Order - 1
                                           ELSE Order + 1 END)
WHERE
     Order BETWEEN @oldOrder AND @newOrder
  OR Order BETWEEN @newOrder AND @oldOrder
  • Qualquer coisa acima ou abaixo das posições originais e novas não precisam ser alteradas.
  • Todo o resto sobe ou desce um.
  • Exceto o item original, que se move para a nova posição.