2011-10-25 3 views
0

나는 다음과 같은 쿼리를 사용하고 많은 분야 중 중복을 선택하면 중복 있습니다 이메일 선택 : 두 사용자가 동일한 이메일이있는 경우 위의 경우MySQL의 :

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

을, 그 쿼리를 표시합니다. 그러나 email2이라는 또 다른 전자 메일 필드가 있는데, 어떻게하면 많은 전자 메일 필드 중에서 그 개수를 비교할 수 있습니까? (예를 들어 사용자가 다른 사용자의 이메일 2와 동일한 이메일을 가지고 있다면 중복 된 것으로 간주됩니다.)

고맙습니다!

+0

나는 당신과 같은 페이지에 있다고 생각하지 않습니다. 중복 된 이메일을 찾으려면 왜 이메일과 이메일 2을 계산해야합니까? 프로젝트에서 "count (email)/count (email2) 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)