การใช้ IF() ในคำสั่ง UPDATE เพื่อตั้งค่าเงื่อนไข
ฟังก์ชัน IF(condition, value_if_true, value_if_false) ใช้ในคำสั่ง UPDATE เพื่อตั้งค่าคอลัมน์ตามเงื่อนไขได้หลายคอลัมน์พร้อมกัน
Syntax
UPDATE table_name
SET col1 = IF(condition, val1, val2),
col2 = IF(condition, val3, val4)
WHERE condition;
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูล:
mysql> CREATE TABLE DemoTable716 (
Id VARCHAR(100),
Value1 INT,
Value2 INT,
Value3 INT
);
Query OK, 0 rows affected (0.65 sec)
mysql> INSERT INTO DemoTable716 VALUES
('100', 45, 86, 79),
('101', 67, 67, 99),
('102', 77, 57, 98),
('103', 45, 67, 92);
Query OK, 4 rows affected
ข้อมูลต้นฉบับ:
mysql> SELECT * FROM DemoTable716;
+------+--------+--------+--------+ | Id | Value1 | Value2 | Value3 | +------+--------+--------+--------+ | 100 | 45 | 86 | 79 | | 101 | 67 | 67 | 99 | | 102 | 77 | 57 | 98 | | 103 | 45 | 67 | 92 | +------+--------+--------+--------+ 4 rows in set (0.00 sec)
อัปเดต Value3 ให้เป็น 67 หาก Value1=67 **หรือ** Value2=67 มิฉะนั้นเป็น NULL (เฉพาะ Id='101'):
mysql> UPDATE DemoTable716 SET Value3 = IF(Value1 = 67 OR Value2 = 67, 67, NULL) WHERE Id = '101'; Query OK, 1 row affected (0.14 sec)
ผลลัพธ์ - แถว Id 101 เปลี่ยน Value3 จาก 99 เป็น 67:
mysql> SELECT * FROM DemoTable716;
+------+--------+--------+--------+ | Id | Value1 | Value2 | Value3 | +------+--------+--------+--------+ | 100 | 45 | 86 | 79 | | 101 | 67 | 67 | 67 | <-- เปลี่ยน | 102 | 77 | 57 | 98 | | 103 | 45 | 67 | 92 | +------+--------+--------+--------+ 4 rows in set (0.00 sec)
ฟังก์ชันเงื่อนไขอื่นๆ ที่ใช้ใน UPDATE ได้
- CASE WHEN ... THEN ... ELSE ... END - เงื่อนไขซับซ้อน หลายกรณี
- COALESCE(val1, val2, ...) - เลือกค่าแรกที่ไม่ใช่ NULL
- NULLIF(expr1, expr2) - คืน NULL หากเท่ากัน
ตัวอย่าง CASE WHEN
UPDATE DemoTable716
SET Value3 = CASE
WHEN Value1 > Value2 THEN Value1
WHEN Value2 > Value1 THEN Value2
ELSE 0
END;