0

我有以下 Mysql 选择,它返回表中所有重复的电子邮件地址。

SELECT users.FirstName, `Surname`, users.email1
FROM users
INNER JOIN (  
    SELECT email1   
  FROM users
GROUP BY email1   
HAVING count(email1) > 1) dup ON users.email1 = dup.email1   
ORDER BY users.email1   

这很好用,我现在想做的是用“YES”更新一个名为 users.DupEmail 的字段,但我不确定如何做到这一点。我曾尝试放置一条更新行来替换选择,但显然我弄错了,因为我回到这里寻求帮助。

有人可以帮忙吗?

4

2 回答 2

2

您可以将多表UPDATE语法与自联接一起使用:

UPDATE users AS u1
  JOIN users AS u2 USING (email1)
   SET u1.DupEmail = 'YES'
 WHERE NOT u1.id = u2.id; -- use your primary key here
于 2012-05-03T14:46:10.703 回答
0

以下脚本必须解决您的问题 - 安全并在应用更新之前使用 SELECT 测试结果:

-- SELECT FirstName, Surname, email1
-- FROM users

UPDATE users
SET DupEmail = 1
WHERE u0.email1 IN (
    SELECT u1.email1
    FROM users u1
    GROUP BY u1.email1
    HAVING COUNT(*) > 1
)
于 2012-05-03T14:53:27.317 回答