数据库每日一题 --- 第 2 天:查找重复的电子邮箱
一、问题描述
编写一个 SQL 查询,查找 Person
表中所有重复的电子邮箱。
复制代码
说明:所有电子邮箱都是小写字母。
题目链接:查找重复的电子邮箱
二、题目要求
样例
复制代码
考察
复制代码
三、问题分析
重复的电子邮箱存在多次。要计算每封电子邮件的存在次数,我们可以使用以下两种方法的相关代码:
1.聚合函数
聚合函数就是分组的意思,将具有相同属性的目标值,根据给定的分组条件进行分组。
这里我们事先使用聚合函数group by
把邮箱号相同的数据分成一组,以上面的样例为例,结果如下:
复制代码
通过分组之后的结果,使用having count
进行具体的操作,筛选出值大于 1 的结果就是重复的电子邮箱。
2.自连接
自连接就是针对相同的表,进行相应的连接操作。我们预先定义两个 a b 都来自于 Person
的数据,
第一步筛就是要预先选出表中不重复的电子邮件,随后和另一个变量对于的表进行遍历。如果满足电子邮件相同但 id 编号不同这样的两个条件,那么就是输出的结果我们要寻找的重复电子邮件。
四、编码实现
1.聚合函数
复制代码
2.连接查询
复制代码
五、测试结果
版权声明: 本文为 InfoQ 作者【知心宝贝】的原创文章。
原文链接:【http://xie.infoq.cn/article/b0a50d6c9816c883ef671a951】。文章转载请联系作者。
评论