2011-02-01 106 views
2

我有一个数据库(约300万条记录),其中有多个/重复的记录,在数据库中具有相同的“电子邮件”,我想留下一行以其默认状态0)并更新其他重复项的“status = 5”。 请注意,并非所有记录都有重复。电子邮件地址以base64编码存储。PHP/MySQL - 更新重复条目的行

+0

是否有一列对每一行都是唯一的?像主键? – 2011-02-02 00:01:59

+0

是的,我的ID是自动增量 – Michael 2011-02-02 00:04:38

回答

9
UPDATE tbl 
JOIN (
    SELECT email, MIN(ID) minID 
    FROM tbl 
    GROUP BY email 
    HAVING COUNT(*) > 1) t2 ON tbl.email = t2.email AND tbl.id != t2.minID 
SET tbl.status = 5