編寫一個 SQL 查詢,查找 Person 表中全部重複的電子郵箱。算法
示例:sql
+----+---------+ | Id | Email | +----+---------+ | 1 | a@b.com | | 2 | c@d.com | | 3 | a@b.com | +----+---------+
根據以上輸入,你的查詢應返回如下結果:code
+---------+ | Email | +---------+ | a@b.com | +---------+
說明:全部電子郵箱都是小寫字母。leetcode
方法一:使用 GROUP BY
和臨時表
算法
重複的電子郵箱存在屢次。要計算每封電子郵件的存在次數,咱們能夠使用如下代碼。get
select Email, count(Email) as num from Person group by Email;
| Email | num | |---------|-----| | a@b.com | 2 | | c@d.com | 1 |
以此做爲臨時表,咱們能夠獲得下面的解決方案。io
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
子句,該子句更爲簡單高效
。
因此咱們能夠將上面的解決方案重寫爲:class
select Email from Person group by Email having count(Email) > 1;