การใช้คำสั่ง CASE ใน UPDATE เพื่อเปลี่ยนค่าตามเงื่อนไข
เมื่อต้องการอัปเดตค่าในคอลัมน์ต่างกันไปตามเงื่อนไขหลายแบบ ให้ใช้ CASE WHEN ... THEN ... END ภายในคำสั่ง UPDATE วิธีนี้ยืดหยุ่นกว่าและอ่านง่ายกว่าการเขียน UPDATE หลายคำสั่ง
สร้างตารางทดสอบ
mysql> CREATE TABLE DemoTable1481 (
-> PlayerScore INT
-> );
Query OK, 0 rows affected (0.42 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO DemoTable1481 VALUES(454); Query OK, 1 row affected (0.41 sec) mysql> INSERT INTO DemoTable1481 VALUES(765); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable1481 VALUES(890); Query OK, 1 row affected (0.09 sec)
ข้อมูลก่อนอัปเดต
+-------------+ | PlayerScore | +-------------+ | 454 | | 765 | | 890 | +-------------+ 3 rows in set (0.00 sec)
คำสั่ง UPDATE พร้อม CASE WHEN
mysql> UPDATE DemoTable1481
-> SET PlayerScore = CASE
-> WHEN PlayerScore = 454 THEN 1256
-> WHEN PlayerScore = 765 THEN 1865
-> WHEN PlayerScore = 890 THEN 3990
-> END;
Query OK, 3 rows affected (0.17 sec)
Rows matched: 3 Changed: 3 Warnings: 0
ข้อมูลหลังอัปเดต
+-------------+ | PlayerScore | +-------------+ | 1256 | | 1865 | | 3990 | +-------------+ 3 rows in set (0.00 sec)
โครงสร้างทั่วไป
UPDATE table_name
SET column_name = CASE
WHEN condition1 THEN value1
WHEN condition2 THEN value2
...
ELSE default_value
END
WHERE condition; -- ตัวกรองแถวที่ต้องการอัปเดต (ถ้ามี)
จุดสำคัญ
- ต้องมี
ENDปิดท้าย CASE - สามารถเพิ่ม
ELSEสำหรับค่าเริ่มต้นได้ - ใช้
WHEREร่วมได้เพื่อจำกัดขอบเขตแถวที่อัปเดต