MySQL-এ এক কোয়ারিতে একাধিক রো আপডেট (CASE WHEN)
একই কলামের বিভিন্ন রোয়ের জন্য ভিন্ন ভিন্ন মান আপডেট করতে CASE WHEN এক্সপ্রেশন ব্যবহার করা হয়। এটি একাধিক UPDATE কোয়ারি চালানোর দরকার নেই।
সিনট্যাক্স
UPDATE yourTableName
SET yourColumnName = CASE yourIdColumn
WHEN value1 THEN newValue1
WHEN value2 THEN newValue2
WHEN value3 THEN newValue3
ELSE yourColumnName
END
WHERE yourIdColumn IN (value1, value2, value3);
উদাহরণ সহ ব্যাখ্যা
টেবিল তৈরি:
mysql> CREATE TABLE updateMultipleRowsDemo (
-> StudentId INT,
-> StudentMathScore INT
-> );
ডেটা ইনসার্ট:
mysql> INSERT INTO updateMultipleRowsDemo VALUES(10001, 67); mysql> INSERT INTO updateMultipleRowsDemo VALUES(10002, 69); mysql> INSERT INTO updateMultipleRowsDemo VALUES(10003, 89); mysql> INSERT INTO updateMultipleRowsDemo VALUES(10004, 99); mysql> INSERT INTO updateMultipleRowsDemo VALUES(10005, 92);
বর্তমান ডেটা:
mysql> SELECT * FROM updateMultipleRowsDemo;
+-----------+------------------+ | StudentId | StudentMathScore | +-----------+------------------+ | 10001 | 67 | | 10002 | 69 | | 10003 | 89 | | 10004 | 99 | | 10005 | 92 | +-----------+------------------+
১০০০১, ১০০০২, ১০০০৩ আইডির স্কোর আপডেট:
mysql> UPDATE updateMultipleRowsDemo
-> SET StudentMathScore = CASE StudentId
-> WHEN 10001 THEN 45
-> WHEN 10002 THEN 52
-> WHEN 10003 THEN 67
-> END
-> WHERE StudentId BETWEEN 10001 AND 10003;
আপডেটের পর:
mysql> SELECT * FROM updateMultipleRowsDemo;
+-----------+------------------+ | StudentId | StudentMathScore | +-----------+------------------+ | 10001 | 45 | | 10002 | 52 | | 10003 | 67 | | 10004 | 99 | | 10005 | 92 | +-----------+------------------+
সুবিধা: একসাথে অনেক রো আপডেট, ট্রানজ্যাকশন কম, পারফরম্যান্স ভাল। WHERE ক্লজে শুধু আপডেট হওয়া আইডিগুলো রাখা ভালো অভ্যাস।