Du behöver inte ens ID
parameter.
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
- Något över eller under de ursprungliga och nya positionerna behöver inte ändras.
- Allt annat rör sig uppåt eller nedåt.
- Förutom originalobjektet, som flyttas till den nya positionen.