मान लीजिए @old
सेब की पुरानी स्थिति के लिए मान 4 है, और @new
नई स्थिति है 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);
मैंने आपके उदाहरण डेटा पर इसका परीक्षण करने के लिए MySQL 5.1.52 का उपयोग किया और यह काम करता है। समान एसक्यूएल भी काम करता है यदि आपको बाद में होने के लिए प्रारंभिक प्रविष्टि को स्थानांतरित करने की आवश्यकता है, या बीच में एक को स्थानांतरित करना है, आदि। बस @old
के मान सेट करें और @new
।