Leetcode 182. Duplicate Emails
182. Duplicate Emails
原题目链接:182. Duplicate Emails
写一条SQL查询语句找出在Person表中所有的重复邮箱。
+----+---------+ | Id | Email | +----+---------+ | 1 | a@b.com | | 2 | c@d.com | | 3 | a@b.com | +----+---------+
举个例子,对于上述表格,你的查询语句返回以下数据:
+---------+ | Email | +---------+ | a@b.com | +---------+
注意:所有的邮箱地址用小写表示。
Solution
方法一:采用GROUP BY语句和临时表[Accepted]
Algorithm
重复邮箱是指超过一次即为重复。为了计算每一个邮箱出现的次数,我们可以采用以下的代码。
1 | SELECT Email, COUNT(Email) as num |
结果如下:
| Email | num | |---------|-----| | a@b.com | 2 | | c@d.com | 1 |
然后将这个作为一个临时表,我们可以得到以下的解法。
MySQL
1 | SELECT Email FROM |
方法二:采用GROUP BY和HAVING条件[Accepted]
Algorithm
另外一个更加常用的方法是在GROUP BY语句后面加一个HAVING语句来增加条件,更加简洁,更加高效。
因此我们可以将代码改写如下:
MySQL
1 | SELECT Email |