Giả sử @old là giá trị 4 cho vị trí cũ của táo và @new là vị trí mới 1.
set @old = 4;
set @new = 1;
UPDATE Items
SET `order value` =
CASE `order value` WHEN @old THEN @new
ELSE `order value` + SIGN(@example@sqldat.com) END
WHERE `order value` BETWEEN LEAST(@old, @new) AND GREATEST(@old, @new);
Tôi đã sử dụng MySQL 5.1.52 để kiểm tra điều này trên dữ liệu mẫu của bạn và nó hoạt động. SQL giống hệt nhau cũng hoạt động nếu bạn cần di chuyển một mục nhập sớm sang mục nhập sau hoặc di chuyển một mục nhập vào giữa, v.v. Chỉ cần đặt các giá trị của @old và @new .