Angenommen @old
ist der Wert 4 für die alte Position von Äpfeln und @new
ist die neue Position 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);
Ich habe MySQL 5.1.52 verwendet, um dies an Ihren Beispieldaten zu testen, und es funktioniert. Das identische SQL funktioniert auch, wenn Sie einen frühen Eintrag nach hinten oder in die Mitte verschieben müssen usw. Legen Sie einfach die Werte von @old
fest und @new
.