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

อัปเดตคอลัมน์ MySQL เฉพาะเมื่อค่าเป็น NULL หรือ 0 ด้วยฟังก์ชัน IF()

สามารถใช้ฟังก์ชัน 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 เพื่อควบคุมการอัปเดตแบบมีเงื่อนไขได้อย่างมีประสิทธิภาพ