- 题目:
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
示例:
±—±--------+
| Id | Email |
±—±--------+
| 1 | [email protected] |
| 2 | [email protected] |
| 3 | [email protected] |
±—±--------+
根据以上输入,你的查询应返回以下结果:
±--------+
| Email |
±--------+
| [email protected] |
±--------+
说明:所有电子邮箱都是小写字母。
- 解题思路
方法一:
使用group by语句来进行分组,再用count 聚集函数来统计组的个数
代码实现:
select Email
from Person
group by Email having count(Email) > 2;
- 方法二:
查找同一个表中邮箱相等但是ID不同元组
select distinct a.Email /*distinct 使相同值只用出现一次*/
from Person a, Person b
where a.Email = b.Email and a.Id != b.Id;