ใช้คำสั่ง DELETE ร่วมกับเงื่อนไขเพื่อลบข้อมูลซ้ำ มาดูตัวอย่าง
สร้างตารางและเพิ่มข้อมูลซ้ำ
mysql> CREATE TABLE DuplicateDeleteDemo (
-> id INT,
-> name VARCHAR(100)
-> );
mysql> INSERT INTO DuplicateDeleteDemo VALUES (1, 'John');
mysql> INSERT INTO DuplicateDeleteDemo VALUES (1, 'John'); -- ซ้ำ
mysql> INSERT INTO DuplicateDeleteDemo VALUES (2, 'Johnson');
mysql> INSERT INTO DuplicateDeleteDemo VALUES (1, 'John'); -- ซ้ำอีก
ข้อมูลก่อนลบ:
+------+---------+ | id | name | +------+---------+ | 1 | John | | 1 | John | | 2 | Johnson | | 1 | John | +------+---------+
ลบข้อมูลซ้ำ (ลบทั้งหมดที่ id=1)
mysql> DELETE FROM DuplicateDeleteDemo WHERE id = 1; Query OK, 3 rows affected (0.19 sec)
ข้อมูลหลังลบ:
+------+---------+ | id | name | +------+---------+ | 2 | Johnson | +------+---------+
วิธีที่ดีกว่า (เก็บค่าเดียวไว้): ใช้ROW_NUMBER()หรือDELETE ... JOINเพื่อลบเฉพาะแถวซ้ำ แต่เก็บแถวแรกไว้-- MySQL 8.0+ DELETE t1 FROM DuplicateDeleteDemo t1 JOIN ( SELECT MIN(id) as keep_id, name FROM DuplicateDeleteDemo GROUP BY name HAVING COUNT(*) > 1 ) t2 ON t1.name = t2.name AND t1.id > t2.keep_id;