การลบแถวที่มีค่า NULL ด้วย DELETE ... WHERE IS NULL
เมื่อต้องการลบแถวที่คอลัมน์ใดคอลัมน์หนึ่งมีค่า NULL ให้ใช้คำสั่ง DELETE ร่วมกับเงื่อนไข WHERE column IS NULL ไม่สามารถใช้ = NULL ได้
ไวยากรณ์ (Syntax)
DELETE FROM yourTableName WHERE yourColumnName IS NULL;
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูลผสม NULL:
mysql> CREATE TABLE removeNullRecordsDemo (
-> Name VARCHAR(100)
-> );
Query OK, 0 rows affected (0.50 sec)
mysql> INSERT INTO removeNullRecordsDemo VALUES('John');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO removeNullRecordsDemo VALUES(NULL);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO removeNullRecordsDemo VALUES('Larry');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO removeNullRecordsDemo VALUES('Bob');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO removeNullRecordsDemo VALUES(NULL);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO removeNullRecordsDemo VALUES('David');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO removeNullRecordsDemo VALUES(NULL);
Query OK, 1 row affected (0.22 sec)
ข้อมูลก่อนลบ:
mysql> SELECT * FROM removeNullRecordsDemo;
+-------+
| Name |
+-------+
| John |
| NULL |
| Larry |
| Bob |
| NULL |
| David |
| NULL |
+-------+
7 rows in set (0.00 sec)
ลบแถวที่ Name เป็น NULL:
mysql> DELETE FROM removeNullRecordsDemo WHERE Name IS NULL;
Query OK, 3 rows affected (0.16 sec)
ผลลัพธ์หลังลบ:
mysql> SELECT * FROM removeNullRecordsDemo;
+-------+
| Name |
+-------+
| John |
| Larry |
| Bob |
| David |
+-------+
4 rows in set (0.00 sec)
ข้อควรระวัง
- ใช้
IS NULLเท่านั้น ห้ามใช้= NULL(จะไม่ทำงาน) - คำสั่ง DELETE จะลบแถวทั้งแถว ไม่ใช่แค่ตั้งค่าคอลัมน์นั้นเป็น NULL
- หากต้องการแค่ตั้งค่าเป็น NULL ให้ใช้
UPDATE table SET col = NULL WHERE ... - ควร Backup หรือทดสอบด้วย SELECT ก่อนลบจริง