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

MySQL UPDATE ทุกแถวที่มีค่า NULL หรือไม่ใช่ NULL ในคอลัมน์ใดคอลัมน์หนึ่ง

ใช้ WHERE column IS NULL OR column IS NULL เพื่ออัปเดตทุกแถวที่มีค่า NULL อย่างน้อย 1 คอลัมน์

ตัวอย่างการใช้งาน

1. สร้างตาราง

mysql> CREATE TABLE DemoTable (
    Id INT,
    Name VARCHAR(20)
);
Query OK, 0 rows affected (0.58 sec)

2. เพิ่มข้อมูล (มี NULL ทั้ง Id และ Name)

mysql> INSERT INTO DemoTable VALUES(10, NULL);
mysql> INSERT INTO DemoTable VALUES(NULL, 'David');
mysql> INSERT INTO DemoTable VALUES(NULL, NULL);

3. แสดงข้อมูลก่อนอัปเดต

mysql> SELECT * FROM DemoTable;
+------+-------+
| Id   | Name  |
+------+-------+
|   10 | NULL  |
| NULL | David |
| NULL | NULL  |
+------+-------+

4. UPDATE: ตั้ง Name = 'Robert' ทุกแถวที่ Id IS NULL หรือ Name IS NULL

mysql> UPDATE DemoTable 
    SET Name = 'Robert' 
    WHERE Id IS NULL OR Name IS NULL;
Query OK, 3 rows affected (0.22 sec)
Rows matched: 3  Changed: 3  Warnings: 0

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

mysql> SELECT * FROM DemoTable;
+------+--------+
| Id   | Name   |
+------+--------+
|   10 | Robert |
| NULL | Robert |
| NULL | Robert |
+------+--------+

ตัวอย่างเพิ่มเติม: อัปเดตคอลัมน์ต่างกันตามเงื่อนไข

UPDATE DemoTable
SET 
    Name = CASE WHEN Name IS NULL THEN 'Unknown' ELSE Name END,
    Id = CASE WHEN Id IS NULL THEN 0 ELSE Id END
WHERE Id IS NULL OR Name IS NULL;

ฟังก์ชันตรวจสอบ NULL

เงื่อนไขความหมาย
col IS NULLค่าเป็น NULL
col IS NOT NULLค่าไม่ใช่ NULL
col = NULL❌ ผิด! จะเป็น UNKNOWN ไม่ใช่ TRUE/FALSE
col <=> NULLNull-safe equal (MySQL extension)

สรุป

ใช้ WHERE col1 IS NULL OR col2 IS NULL เพื่อจับทุกแถวที่มี NULL อย่างน้อย 1 คอลัมน์ แล้ว UPDATE ค่าที่ต้องการ จำไว้ว่า = NULL ไม่ทำงาน ต้องใช้ IS NULL