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(@[email protected]) 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
.