MySQL删除重复行的方式

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;
posted @ 2020-05-09 15:46  Yuezc  Views(682)  Comments(0Edit  收藏  举报