UPDATE ... CASE WHEN দিয়ে দুই মান পরস্পর বিনিময়
MySQL-এ একটি কলামে শুধু 'a' এবং 'b' মান থাকলে, CASE WHEN এক্সপ্রেশন ব্যবহার করে একসাথে দুটি মান বিনিময় করা যায়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (Value CHAR(1));
mysql> INSERT INTO DemoTable VALUES('a'), ('b'), ('a'), ('a'), ('b'), ('a'), ('b');
আপডেটের আগে
+-------+ | Value | +-------+ | a | | b | | a | | a | | b | | a | | b | +-------+
CASE WHEN দিয়ে SWAP
mysql> UPDATE DemoTable SET Value = CASE WHEN Value = 'a' THEN 'b' ELSE 'a' END; Query OK, 7 rows affected (0.17 sec)
আপডেটের পর
+-------+ | Value | +-------+ | b | | a | | b | | b | | a | | b | | a | +-------+
ব্যাখ্যা
CASE WHEN Value='a' THEN 'b' ELSE 'a' END— 'a' হলে 'b', অন্যথায় (এখানে শুধু 'b' থাকে) 'a' সেট করে।- একই UPDATE-এ দুটি মান বিনিময় হয়ে যায়, কোনো টেম্পোরারি কলাম বা একাধিক কোয়েরি লাগে না।
বিকল্প পদ্ধতি (MySQL 8.0+)
UPDATE DemoTable SET Value = IF(Value='a','b','a');
IF() ফাংশন দিয়ে আরও সংক্ষিপ্ত লিখা যায়।