MySQL-এ শর্তসাপেক্ষে আপডেট করতে UPDATE কোয়েরির ভিতরে CASE স্টেটমেন্ট ব্যবহার করা হয়। এটি একাধিক শর্তের ভিত্তিতে ভিন্ন ভিন্ন আপডেট করার সুবিধা দেয়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserScore INT
-> );
mysql> INSERT INTO DemoTable(UserScore) VALUES(100);
mysql> INSERT INTO DemoTable(UserScore) VALUES(110);
mysql> INSERT INTO DemoTable(UserScore) VALUES(120);
mysql> INSERT INTO DemoTable(UserScore) VALUES(200);
mysql> INSERT INTO DemoTable(UserScore) VALUES(230);
mysql> INSERT INTO DemoTable(UserScore) VALUES(250);
mysql> INSERT INTO DemoTable(UserScore) VALUES(270);
প্রাথমিক ডেটা
mysql> SELECT * FROM DemoTable;
+--------+-----------+
| UserId | UserScore |
+--------+-----------+
| 1 | 100 |
| 2 | 110 |
| 3 | 120 |
| 4 | 200 |
| 5 | 230 |
| 6 | 250 |
| 7 | 270 |
+--------+-----------+
CASE দিয়ে কন্ডিশনাল আপডেট
mysql> UPDATE DemoTable
-> SET UserScore = CASE
-> WHEN UserScore BETWEEN 100 AND 120 THEN UserScore + 5
-> WHEN UserScore BETWEEN 130 AND 230 THEN UserScore + 10
-> WHEN UserScore >= 250 THEN UserScore * 5
-> ELSE UserScore
-> END;
আপডেটের পর ডেটা
mysql> SELECT * FROM DemoTable;
+--------+-----------+
| UserId | UserScore |
+--------+-----------+
| 1 | 105 |
| 2 | 115 |
| 3 | 125 |
| 4 | 210 |
| 5 | 240 |
| 6 | 1250 |
| 7 | 1350 |
+--------+-----------+
ব্যাখ্যা:
- ১০০-১২০ রেঞ্জ: +৫ যোগ
- ১৩০-২৩০ রেঞ্জ: +১০ যোগ
- ২৫০ বা বেশি: ৫ দিয়ে গুণ
- অন্যান্য: অপরিবর্তিত
টিপস: CASE এক্সপ্রেশন SELECT-এও একইভাবে ব্যবহার করা যায়।