1、-- 删除重复行,且保留最高的id: 因为删除的是a表的中的id小于b表中的。
DELETE a FROM contacts a INNER JOIN contacts b WHERE a.id < b.id AND a.email = b.email;
2、-- 删除重复行,且保留最小的id: 因为删除的是a表的中的id大于b表中的。
DELETE a FROM contacts a INNER JOIN contacts b WHERE a.id > b.id AND a.email = b.email;
3、第三种删除重复行的方式
-- step 1、创建一个表 CREATE TABLE contacts_temp LIKE contacts; -- step 2、插入contacts中不重复的数据 INSERT INTO contacts_temp(email) SELECT email FROM contacts GROUP BY email; -- step 3、删除原表contacts DROP TABLE contacts; -- step 4、将新建的表contacts_temp的名称修改为原表的名称 ALTER TABLE contacts_temp RENAME TO contacts;