สามารถใช้ฟังก์ชัน IF() ร่วมกับคำสั่ง UPDATE เพื่ออัปเดตค่าคอลัมน์เฉพาะเมื่อค่าเดิมเป็น NULL หรือ 0 เท่านั้น
Syntax
UPDATE table_name SET column_name = IF(column_name IS NULL OR column_name = 0, new_value, column_name);
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล
mysql> create table DemoTable1592 ( StudentMarks int ); Query OK, 0 rows affected (0.76 sec) mysql> insert into DemoTable1592 values(56); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable1592 values(NULL); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable1592 values(98); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable1592 values(0); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable1592 values(75); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable1592 values(NULL); Query OK, 1 row affected (0.11 sec)
ข้อมูลก่อนอัปเดต:
mysql> select * from DemoTable1592;
+--------------+ | StudentMarks | +--------------+ | 56 | | NULL | | 98 | | 0 | | 75 | | NULL | +--------------+ 6 rows in set (0.00 sec)
2. อัปเดตเฉพาะค่า NULL หรือ 0 ให้กลายเป็น 33
mysql> update DemoTable1592 set StudentMarks = if(StudentMarks IS NULL or StudentMarks = 0, 33, StudentMarks); Query OK, 3 rows affected (0.17 sec) Rows matched: 6 Changed: 3 Warnings: 0
ข้อมูลหลังอัปเดต:
mysql> select * from DemoTable1592;
+--------------+ | StudentMarks | +--------------+ | 56 | | 33 | | 98 | | 33 | | 75 | | 33 | +--------------+ 6 rows in set (0.00 sec)
อธิบายการทำงาน
- แถวที่ 1: ค่า 56 → ไม่ใช่ NULL/0 → คงค่าเดิม (56)
- แถวที่ 2: ค่า NULL → ตรงเงื่อนไข → อัปเดตเป็น 33
- แถวที่ 3: ค่า 98 → ไม่ใช่ NULL/0 → คงค่าเดิม (98)
- แถวที่ 4: ค่า 0 → ตรงเงื่อนไข → อัปเดตเป็น 33
- แถวที่ 5: ค่า 75 → ไม่ใช่ NULL/0 → คงค่าเดิม (75)
- แถวที่ 6: ค่า NULL → ตรงเงื่อนไข → อัปเดตเป็น 33
สรุป: ใช้ IF(condition, true_value, false_value) ภายใน SET ของคำสั่ง UPDATE เพื่อควบคุมการอัปเดตแบบมีเงื่อนไขได้อย่างมีประสิทธิภาพ