MySQL-এ একই টেবিলে একাধিক শর্তের ভিত্তিতে ভিন্ন ভিন্ন আপডেট করতে আলাদা আলাদা UPDATE চালানোর বদলে একই কোয়েরিতে CASE স্টেটমেন্ট ব্যবহার করা যায়। এটি পারফরম্যান্সে ভালো এবং অ্যাটমিক।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20)
);
mysql> INSERT INTO DemoTable(Name) VALUES ('John'), ('Carol'), ('David');
আপডেট করার আগে
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Carol | | 3 | David | +----+-------+
একই কোয়েরিতে একাধিক আপডেট (CASE)
mysql> UPDATE DemoTable
SET Name = CASE
WHEN Name = 'John' THEN 'John Smith'
WHEN Name = 'Carol' THEN 'Carol Taylor'
WHEN Name = 'David' THEN 'David Miller'
END
WHERE Name IN ('John', 'Carol', 'David');
Query OK, 3 rows affected (0.12 sec)
আপডেট করার পর
+----+--------------+ | Id | Name | +----+--------------+ | 1 | John Smith | | 2 | Carol Taylor | | 3 | David Miller | +----+--------------+
ব্যাখ্যা: CASE এক্সপ্রেশনটি প্রতিটি রোয়ের জন্য শর্ত চেক করে এবং মিলে য السلطان মান সেট করে। WHERE Name IN (...) ক্লজ শুধু প্রাসঙ্গিক রোগুলো আপডেট করে, অন্য রো অপ্রভাবিত থাকে। ELSE ক্লজ না দিলে অনম্যাচ রোয়ের জন্য NULL সেট হয় (সতর্ক থাকুন)।