我有一个包含许多重复行的 MySQL 表。我怎样才能找到 id 并删除它们。我需要保留第一个 lead_id 并删除任何其他重复项。
因此,在此示例中,我需要找到重复的电子邮件值并删除所有行。 IE。删除所有 lead_id 为 40944 的行并保留所有 40943。
id | lead_id | form |field_number | value
--------+---------------+-------+---------------+----------------------
537618 | 40943 |1 | 3.3 | Mike
537622 | 40943 |1 | 4.3 | Mesa
537623 | 40943 |1 | 4.4 | AZ
537624 | 40943 |1 | 4.5 | 85210
537625 | 40943 |1 | 4.6 | United States
537626 | 40943 |1 | 5 | mike@email.com
537627 | 40943 |1 | 6 | (555) 555-5555
537628 | 40943 |1 | 19 | JM-SL-I4CLR,JM-FM-I5CLR
537629 | 40943 |1 | 12 | 2015-10-01
547618 | 40944 |1 | 3.3 | Mike
547622 | 40944 |1 | 4.3 | Mesa
547623 | 40944 |1 | 4.4 | AZ
547624 | 40944 |1 | 4.5 | 85210
547625 | 40944 |1 | 4.6 | United States
547626 | 40944 |1 | 5 | mike@email.com
547627 | 40944 |1 | 6 | (555) 555-5555
547628 | 40944 |1 | 19 | JM-SL-I4CLR,JM-FM-I5CLR
547629 | 40944 |1 | 12 | 2015-10-01
我试过了:
SELECT `value`, count(*)
FROM `lead_detail`
WHERE `field_number` = 5
GROUP BY `value`
HAVING count(*) > 1
结果
value | count(*)
---------------+------------------
mike@email.com | 2
只是不确定如何删除行?
最佳答案
您可以使用与此类似的东西来简单地做到这一点。我自己用过它并成功完成了工作..
DELETE t1 FROM lead_detail t1, lead_detail t2
WHERE t1.id > t2.id AND t1.field_number = t2.field_number
而且您还可以根据需要自由扩展/更改 where 部分(仅在需要时)。
关于MySQL重复具有不同ID的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38237622/