从mysql中删除重复的列值

时间:2014-04-22 08:57:00

标签: mysql sql delete-row

我有名为emails的mysql表,其中多列如

"first_name","last_name","email","contact"

我在此表中拥有大量数据,其中包含许多多个电子邮件ID。 我希望这些数据在其他行中没有任何单个电子邮件时是唯一的。

请分享如何为它编写SQL查询

由于 第

2 个答案:

答案 0 :(得分:1)

首先,您可能需要使用以下查询查找重复电子邮件列表。

select email, COUNT(*) as cnt  
FROM emails   
group by email  
order by cnt desc

查询将提供电子邮件和重复次数。然后根据哪条记录有效,采取删除步骤。

答案 1 :(得分:1)

使用此

SELECT * FROM emails
WHERE email IN (
    SELECT DISTINCT email 
    FROM emails
    WHERE email IN (
        SELECT COUNT(*) AS [Number],
               email,
               first_name,
               last_name,
               contact
        FROM emails   
        GROUP BY email, first_name, last_name, contact
                   )
               )

然后,如果它返回正确的结果,请使用此

DELETE FROM emails
WHERE email IN (
    SELECT DISTINCT * 
    FROM emails
    WHERE email IN (
        SELECT COUNT(*) AS [Number],
               email,
               first_name,
               last_name,
               contact
        FROM emails   
        GROUP BY email, first_name, last_name, contact
                   )
               )