Дори не се нуждаете от ID
параметър.
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
- Всичко над или под оригиналните и новите позиции не трябва да се променя.
- Всичко останало се движи с единица нагоре или надолу.
- С изключение на оригиналния елемент, който се премества на новата позиция.