@1337c0d3r said in I have this Simple Approach, anybody has some other way:

Your answer is the standard way and should be the most efficient. I also know three other ways as shown below:

Use self join.

SELECT DISTINCT a.Email FROM Person a JOIN Person b ON (a.Email = b.Email) WHERE a.Id <> b.IdUse subquery with EXISTS:

SELECT DISTINCT a.Email FROM Person a WHERE EXISTS( SELECT 1 FROM Person b WHERE a.Email = b.Email LIMIT 1, 1 )Basic idea is this query:

SELECT DISTINCT Email FROM Person MINUS (SELECT Id, Email FROM Person GROUP BY Email)But since MySQL does not support MINUS, we use LEFT JOIN:

SELECT DISTINCT a.Email FROM Person a LEFT JOIN (SELECT Id, Email from Person GROUP BY Email) b ON (a.email = b.email) AND (a.Id = b.Id) WHERE b.Email IS NULL

SELECT DISTINCT a.Email FROM Person a WHERE 1 < (SELECT COUNT(*) FROM Person b WHERE a.Email=b.Email)