2011-10-25 84 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)