Stel dat @old
is de waarde 4 voor de oude positie van appels, en @new
is de nieuwe positie 1.
set @old = 4;
set @new = 1;
UPDATE Items
SET `order value` =
CASE `order value` WHEN @old THEN @new
ELSE `order value` + SIGN(@[email protected]) END
WHERE `order value` BETWEEN LEAST(@old, @new) AND GREATEST(@old, @new);
Ik heb MySQL 5.1.52 gebruikt om dit te testen op uw voorbeeldgegevens en het werkt. De identieke SQL werkt ook als u een vroege invoer naar later moet verplaatsen, of een in het midden, enz. Stel gewoon de waarden van @old
in en @new
.