我的问题是这个,
我有一个包含电子邮件,名字和姓氏列的表格。我可以使用哪些查询来删除重复项,包括原始文件?
所以如果表有两个这样的记录:
johndoe@email.com | john | doe
johndoe@email.com | john | doe
如何删除这两条记录,以便从表中完全删除记录?
感谢您的帮助
答案 0 :(得分:1)
此查询将删除所有具有相同电子邮件,名字和姓氏的行:
DELETE yourtable.*
FROM
yourtable INNER JOIN (SELECT email, firstname, lastname
FROM yourtable
GROUP BY email, firstname, lastname
HAVING COUNT(*)>1) dup
ON yourtable.email = dup.email
AND yourtable.firstname = dup.firstname
AND yourtable.lastname = dup.lastname
请参阅小提琴here。
我正在使用一个将返回所有重复项的子查询,并且我将使用yourtable本身加入所有重复项,并且我将删除与该连接匹配的所有行。
编辑:如果您在名为duplicates的表中有所有重复项,则可以使用此删除查询:
DELETE Contacts.*
FROM
Contacts INNER JOIN Duplicates
ON Contacts.email = Duplicates.email
AND Contacts.firstname = Duplicates.firstname
AND Contacts.lastname = Duplicates.lastname
这将删除与重复项上的行匹配的联系人中的所有行(使用相同的电子邮件,相同的名字和相同的姓氏)