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

อัปเดตข้อมูล MySQL ด้วยเงื่อนไข IF และ CASE

การใช้ IF() และ CASE ในคำสั่ง UPDATE

MySQL รองรับฟังก์ชัน IF() และ CASE ภายในคำสั่ง UPDATE เพื่ออัปเดตแบบมีเงื่อนไข

ตัวอย่างสร้างตารางและข้อมูล

mysql> CREATE TABLE UpdateWithIfCondition (
    -> BookId INT,
    -> BookName VARCHAR(200)
    -> );
Query OK, 0 rows affected (0.60 sec)

mysql> INSERT INTO UpdateWithIfCondition VALUES(1000,'C in Depth');
mysql> INSERT INTO UpdateWithIfCondition VALUES(1001,'Introduction to Java');

ข้อมูลเริ่มต้น

mysql> SELECT * FROM UpdateWithIfCondition;
+--------+----------------------+
| BookId | BookName             |
+--------+----------------------+
| 1000   | C in Depth           |
| 1001   | Introduction to Java |
+--------+----------------------+
2 rows in set (0.00 sec)

อัปเดตพร้อมกันหลายคอลัมน์ด้วย IF()

mysql> UPDATE UpdateWithIfCondition
    -> SET BookName = IF(BookName = 'C in Depth', 'Introduction to C', BookName),
    ->     BookId = IF(BookId = 1001, 2000, BookId);
Query OK, 2 rows affected (0.43 sec)

ผลลัพธ์หลังอัปเดต

mysql> SELECT * FROM UpdateWithIfCondition;
+--------+----------------------+
| BookId | BookName             |
+--------+----------------------+
| 1000   | Introduction to C    |
| 2000   | Introduction to Java |
+--------+----------------------+
2 rows in set (0.00 sec)

รูปแบบ IF(): IF(condition, value_if_true, value_if_false)

การใช้ CASE ใน UPDATE (ยืดหยุ่นกว่า):

UPDATE table_name
SET column_name = CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ELSE default_value
END
WHERE ...;

ตัวอย่าง CASE:

UPDATE products
SET price = CASE
    WHEN category = 'electronics' THEN price * 1.1
    WHEN category = 'books' THEN price * 1.05
    ELSE price
END;

ข้อแตกต่าง: IF() เป็นฟังก์ชัน (รับ 3 argument) ส่วน CASE เป็น statement/operator รองรับหลายเงื่อนไข