क्या ऐसा कुछ ऐसा करेगा?
UPDATE items
SET position = CASE position
WHEN $oldpos THEN $newpos
ELSE position + SIGN($oldpos-$newpos)
END
WHERE position BETWEEN LEAST( $newpos, $oldpos )
AND GREATEST( $newpos, $oldpos );
मैंने इसे दो बार परीक्षण किया और ऐसा लगता है कि यह काम करता है।