问题描述:
编写一个SQL查询,查找Person表中所有重复的电子邮箱。
示例:
+----+---------+
| Id | Email |
+----+---------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+----+---------+
根据以上输入,你的查询应返回以下结果:
+---------+
| Email |
+---------+
| a@b.com |
+---------+
算法设计与分析:
方法一:使用group by和count(),将Email的数量查询出来,并取别名为num,再在查出来的子集中将email的数目大于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;