我的问题是这样的
我有一个包含电子邮件、名字和姓氏列的表。我可以使用什么查询来删除重复项,包括原始项?
因此,如果表有两条记录,如下所示:
johndoe@email.com | john | doe
johndoe@email.com | john | doe
如何删除两条记录,以便将记录从表中完全删除?
我感谢您的帮助
我的问题是这样的
我有一个包含电子邮件、名字和姓氏列的表。我可以使用什么查询来删除重复项,包括原始项?
因此,如果表有两条记录,如下所示:
johndoe@email.com | john | doe
johndoe@email.com | john | doe
如何删除两条记录,以便将记录从表中完全删除?
我感谢您的帮助
此查询将删除具有相同电子邮件、名字和姓氏的所有行:
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
请在此处查看小提琴。
我正在使用一个将返回所有重复项的子查询,并且我正在将所有重复项与您的表本身连接起来,并且我正在删除与连接匹配的所有行。
编辑:如果您在名为重复的表中有所有重复项,则可以使用此删除查询:
DELETE Contacts.*
FROM
Contacts INNER JOIN Duplicates
ON Contacts.email = Duplicates.email
AND Contacts.firstname = Duplicates.firstname
AND Contacts.lastname = Duplicates.lastname
这将从联系人中删除与重复项上的行匹配的所有行(具有相同的电子邮件、相同的名字和相同的姓氏)