UPDATE কোয়েরির ভেতরে CASE স্টেটমেন্ট ব্যবহার করে শর্তভিত্তি ভিন্ন মান সেট করা যায়। নিচে Marks ৪৫ হলে ৯৮ এবং ৯৮ হলে ০ সেট করার উদাহরণ দেওয়া হলো।
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1925 (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(20),
StudentMarks INT
);
mysql> INSERT INTO DemoTable1925 (StudentName, StudentMarks) VALUES
('Chris', 98), ('David', 45);
আপডেটের আগে
mysql> SELECT * FROM DemoTable1925;
+-----------+-------------+--------------+ | StudentId | StudentName | StudentMarks | +-----------+-------------+--------------+ | 1 | Chris | 98 | | 2 | David | 45 | +-----------+-------------+--------------+
CASE সহ UPDATE কোয়েরি
mysql> UPDATE DemoTable1925
SET StudentMarks = CASE StudentMarks
WHEN 45 THEN 98
WHEN 98 THEN 0
END
WHERE StudentMarks IN (45, 98);
আউটপুট: Query OK, 2 rows affected (0.00 sec)
আপডেটের পর
mysql> SELECT * FROM DemoTable1925;
+-----------+-------------+--------------+ | StudentId | StudentName | StudentMarks | +-----------+-------------+--------------+ | 1 | Chris | 0 | | 2 | David | 98 | +-----------+-------------+--------------+
ব্যাখ্যা
CASE StudentMarks WHEN 45 THEN 98 WHEN 98 THEN 0 END— Simple CASE সিনট্যাক্স।WHERE StudentMarks IN (45,98)— শুধু প্রাসঙ্গিক সারি আপডেট, পারফরম্যান্স বাড়ায়।- ELSE না থাকলে নন-ম্যাচিং সারি NULL হয়ে যাবে (যদি কলাম NULLable হয়) — সতর্ক থাকুন।
Searched CASE ভার্সন (জটিল শর্তের জন্য)
SET StudentMarks = CASE
WHEN StudentMarks BETWEEN 0 AND 50 THEN StudentMarks + 10
WHEN StudentMarks > 50 THEN StudentMarks - 5
ELSE StudentMarks
END;