sql >> Base de Datos >  >> RDS >> Sqlserver

¿Generar un SQL de actualización para cambiar el orden de un artículo?

Ni siquiera necesitas el 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
  • No es necesario cambiar nada por encima o por debajo de las posiciones original y nueva.
  • Todo lo demás se mueve hacia arriba o hacia abajo.
  • Excepto el elemento original, que se mueve a la nueva posición.