Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีอัปเดต/แทนที่แถวในตาราง MySQL ตามเงื่อนไขด้วย CASE WHEN

การใช้คำสั่ง 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 ร่วมได้เพื่อจำกัดขอบเขตแถวที่อัปเดต