[SQL刷题]LeetCode:182. 查找重复的电子邮箱

544 阅读1分钟

写在前面

题目

编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。 示例:

根据以上输入,你的查询应返回以下结果:

说明:所有电子邮箱都是小写字母。

思路1

方法很简单,我们要对email分组,然后汇总计数,计数大于等于2的就是我们要找的数据

select email
from person
group by email
having count(*)>=2

那么有无其他的思路呢?这反而有点不好想了。但一定是有点,就像写程序语言一样,同样的目的地总是有不同的实现方法。

思路2

分表的一个思路,如果是2个表,那么重复的email特征是id不等(主键),email相等 那么可以这么做。

select distinct a.email
from person a,person b
where a.id!=b.id
and a.email=b.email