ใช้ CASE WHEN ... THEN ... ELSE ... END ภายในคำสั่ง UPDATE เพื่ออัปเดตค่าแบบมีเงื่อนไขหลายระดับ
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserScore INT
);
mysql> INSERT INTO DemoTable(UserScore) VALUES (100), (110), (120), (200), (230), (250), (270);
ดูข้อมูลก่อนอัปเดต
mysql> SELECT * FROM DemoTable;
+--------+-----------+
| UserId | UserScore |
+--------+-----------+
| 1 | 100 |
| 2 | 110 |
| 3 | 120 |
| 4 | 200 |
| 5 | 230 |
| 6 | 250 |
| 7 | 270 |
+--------+-----------+
คำสั่ง UPDATE ด้วย 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;
Query OK, 7 rows affected (0.06 sec)
ดูข้อมูลหลังอัปเดต
mysql> SELECT * FROM DemoTable;
+--------+-----------+
| UserId | UserScore |
+--------+-----------+
| 1 | 105 |
| 2 | 115 |
| 3 | 125 |
| 4 | 210 |
| 5 | 240 |
| 6 | 1250 |
| 7 | 1350 |
+--------+-----------+
คำอธิบาย: แต่ละแถวถูกประเมินเงื่อนไขตามลำดับ ใช้เงื่อนไขแรกที่ตรง