2011-10-25 86 views
0

我使用下面的查询中选择重复来选择是重复邮件:MySQL的:许多领域

SELECT email 
       FROM contacts 
       WHERE active = 1 
       GROUP BY email 
       HAVING (COUNT(email) > 1) 

在上述情况下,如果两个用户具有相同的电子邮件,该查询会告诉他们。但是,还有另一个名为email2的电子邮件字段,我该怎么做才能比较许多电子邮件字段中的计数? (例如,如果用户的电子邮件等于另一个用户的电子邮件2,则它们将被视为重复邮件)

谢谢!

+0

我不认为我在这里和你在同一页面。为什么要计算电子邮件和电子邮件2以查找重复内容?您可以在项目中使用“计数(电子邮件)/计数(电子邮件2)AS Duplicate”。你将有1重复。 – user618677

回答

2
SELECT tmp.email FROM (
    SELECT email as email FROM contacts WHERE active = 1 
    UNION ALL 
    SELECT email2 as email FROM contacts WHERE email != email2 AND active = 1 
) as tmp 
GROUP by tmp.email 
HAVING COUNT(tmp.email) > 1 

P.S:我的语法可能是错误的,但这个想法应该是这样的。

-1
SELECT email 
FROM contacts 
WHERE (email = email2) AND (active = 1) 

如果我正确地解释你。或者,您的意思是某些用户记录可能在一条记录中的email字段中有“[email protected]”,另一条记录中的email2字段中有相同的地址?那会是

SELECT primary.email, primary.id, secondary.id 
FROM contacts AS primary 
INNER JOIN contacts AS secondary ON (primary.email = secondary.email2)