182. 查找重復的電子郵箱
阿新 • • 發佈:2018-09-29
span for sql 子句 方法 說明 following sta clas
方法1:使用
方法2:使用
Write a SQL query to find all duplicate emails in a table named Person
.
+----+---------+ | Id | Email | +----+---------+ | 1 | [email protected] | | 2 | [email protected] | | 3 | [email protected] | +----+---------+
For example, your query should return the following for the above table:
+---------+ | Email | +---------+ | [email protected] | +---------+
Note: All emails are in lowercase.
編寫一個 SQL 查詢,查找 Person
表中所有重復的電子郵箱。
示例:
+----+---------+ | Id | Email | +----+---------+ | 1 | [email protected] | | 2 | [email protected] | | 3 | [email protected] | +----+---------+
根據以上輸入,你的查詢應返回以下結果:
+---------+ | Email | +---------+ | [email protected] | +---------+
說明:所有電子郵箱都是小寫字母。
方法1:使用GROUP BY
和臨時表
算法:重復的電子郵件存在多次。要計算每封電子郵件的存在時間,我們可以使用以下代碼。
1 select Email, count(Email) as num 2 from Person 3 group by Email;
| Email | num | |---------|-----| | [email protected] | 2 | | [email protected] | 1 |
以此作為臨時表,我們可以得到如下解決方案。
1 select Email from 2 ( 3 select Email, count(Email) asnum 4 from Person 5 group by Email 6 ) as statistic 7 where num > 1 8 ;
方法2:使用GROUP BY
和HAVING
條件
向a添加條件的一種更常用的方法GROUP BY
是使用該HAVING
子句,這更簡單,更有效。
所以我們可以重寫上面的解決方案。
1 select Email 2 from Person 3 group by Email 4 having count(Email) > 1;
182. 查找重復的電子郵箱