[LeetCode] Duplicate Emails 重復的郵箱


 

Write a SQL query to find all duplicate emails in a table named Person.

+----+---------+
| Id | Email   |
+----+---------+
| 1  | a@b.com |
| 2  | c@d.com |
| 3  | a@b.com |
+----+---------+

For example, your query should return the following for the above table:

+---------+
| Email   |
+---------+
| a@b.com |
+---------+

Note: All emails are in lowercase.

 

這道題讓我們求重復的郵箱,那么最直接的方法就是用Group by...Having Count(*)...的固定搭配來做,代碼如下:

 

解法一:

SELECT Email FROM Person GROUP BY Email
HAVING COUNT(*) > 1;

 

我們還可以用內交來做,用Email來內交兩個表,然后返回Id不同的行,則說明兩個不同的人使用了相同的郵箱:

 

解法二:

SELECT DISTINCT p1.Email FROM Person p1
JOIN Person p2 ON p1.Email = p2.Email
WHERE p1.Id <> p2.Id;

 

參考資料:

https://leetcode.com/discuss/53206/a-solution-using-a-group-by-and-another-one-using-a-self-join

 

LeetCode All in One 題目講解匯總(持續更新中...)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM