เมื่อต้องการลบข้อมูลทั้งหมดยกเว้นรายการที่ระบุ (Whitelist) ให้ใช้ DELETE ... WHERE column NOT IN (...)
ตัวอย่างการสร้างตาราง
mysql> create table DemoTable (
FirstName varchar(100) );
Query OK, 0 rows affected (0.65 sec)
เพิ่มข้อมูล 5 ชื่อ
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.12 sec)
แสดงข้อมูลก่อนลบ
mysql> select * from DemoTable;
+-----------+ | FirstName | +-----------+ | Chris | | Robert | | Mike | | Sam | | David | +-----------+ 5 rows in set (0.00 sec)
คำสั่ง DELETE ลบทุกอย่างยกเว้น Robert และ Mike
mysql> delete from DemoTable where FirstName NOT IN('Robert', 'Mike');
Query OK, 3 rows affected (0.17 sec)
ตรวจสอบข้อมูลหลังลบ (เหลือแค่ Robert และ Mike)
mysql> select * from DemoTable;
+-----------+ | FirstName | +-----------+ | Robert | | Mike | +-----------+ 2 rows in set (0.00 sec)
คำอธิบาย: NOT IN ('Robert', 'Mike') หมายถึง "ไม่ใช่ Robert และไม่ใช่ Mike" ทำให้แถวที่มีชื่ออื่นถูกลบออก วิธีนี้เหมาะสำหรับการเก็บข้อมูลเฉพาะรายการที่ต้องการ (Whitelist approach)
ข้อควรระวัง: หากคอลัมน์มีค่า NULL ค่า NULL จะไม่เข้าสู่ NOT IN ได้ (เพราะ NULL ไม่เท่ากับอะไรเลย) ต้องเพิ่ม OR column IS NULL หากต้องการเก็บ NULL ไว้