182. 查找重复的电子邮箱
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
解答:
思路1:用笛卡尔积
select distinct a.Email from Person as a ,Person as b where a.Email=b.Email and a.Id<>b.Id
此方法虽然笨,但也恭喜菜鸟第一次成功完成了该题!
思路二:使用 GROUP BY 和 HAVING 条件
向 GROUP BY 添加条件的一种更常用的方法是使用 HAVING 子句,该子句更为简单高效。
select Email from Person group by Email
having count(Email) > 1;
group by和having。还需要记得优先顺序。where>group by>having>order by
思路三:使用 GROUP BY 和临时表
重复的电子邮箱存在多次。要计算每封电子邮件的存在次数,我们可以使用以下代码。
select Email from
(
select Email, count(Email) as num
from Person
group by Email
) as statistic
where num > 1
注意: statistic 作为临时表 必须命名