編寫一個 SQL 查詢,查找 Person 表中所有重覆的電子郵箱。 示例 : 根據以上輸入,你的查詢應返回以下結果: 說明 :所有電子郵箱都是小寫字母。 題解: 方法一 :使用 和臨時表 演算法 重覆的電子郵箱存在多次。要計算每封電子郵件的存在次數,我們可以使用以下代碼。 以此作為臨時表,我們可以得 ...
編寫一個 SQL 查詢,查找 Person 表中所有重覆的電子郵箱。
示例:
+----+---------+
| Id | Email |
+----+---------+
| 1 | [email protected] |
| 2 | [email protected] |
| 3 | [email protected] |
+----+---------+
根據以上輸入,你的查詢應返回以下結果:
+---------+
| Email |
+---------+
| [email protected] |
+---------+
說明:所有電子郵箱都是小寫字母。
題解:
方法一:使用 GROUP BY
和臨時表
演算法
重覆的電子郵箱存在多次。要計算每封電子郵件的存在次數,我們可以使用以下代碼。
select Email, count(Email) as num
from Person
group by Email;
| Email | num |
|---------|-----|
| [email protected] | 2 |
| [email protected] | 1 |
以此作為臨時表,我們可以得到下麵的解決方案。
select Email from
(
select Email, count(Email) as num
from Person
group by Email
) as statistic
where num > 1;
方法二:使用 GROUP BY
和 HAVING
條件
向 GROUP BY
添加條件的一種更常用的方法是使用 HAVING
子句,該子句更為簡單高效
。
所以我們可以將上面的解決方案重寫為:
select Email
from Person
group by Email
having count(Email) > 1;