Załóżmy, że @old
to wartość 4 dla starej pozycji jabłek, a @new
to nowa pozycja 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);
Użyłem MySQL 5.1.52 do przetestowania tego na przykładowych danych i działa. Identyczny kod SQL działa również, jeśli musisz przenieść wczesny wpis, aby był później, lub przenieść go w środku itp. Po prostu ustaw wartości @old
i @new
.