编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
示例:
Id | |
---|---|
1 | a@b.com |
2 | c@d.com |
3 | a@b.com |
根据以上输入,你的查询应返回以下结果:
a@b.com |
说明:所有电子邮箱都是小写字母。
初始想法是进行自连接或者内连接
select distinct p.Email from Person p,Person p1 where p.Email = p1.Email and p.Id != p1.Id;
select distinct p.Email from Person p inner join Person p1 on p.Email = p1.Email and p.Id != p1.Id;
效率来看都不是很好,如果只进行一次查询会好很多
group by 之后由于不能使用where,所以用了having,查询效率提升很多
select distinct p.Email from Person p group by p.Email having count(p.Email) > 1;