【LeetCode】寻找重复的电子邮箱

编写一个 SQL查询,来查找名为 Person 的表中的所有重复电子邮件。

示例:

+----+---------+
| Id | Email   |
+----+---------+
| 1  | a@b.com |
| 2  | c@d.com |
| 3  | a@b.com |
+----+---------+

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

+---------+
| Email   |
+---------+
| a@b.com |
+---------+

注意: 所有电子邮件都是小写字母。


Person 表的录入

Create table If Not Exists Person (Id int, Email varchar(255))
Truncate table Person
insert into Person (Id, Email) values ('1', 'a@b.com')
insert into Person (Id, Email) values ('2', 'c@d.com')
insert into Person (Id, Email) values ('3', 'a@b.com')

MySQL解答

select Email from Person
group by Email having(count(*))>1

耗时:458ms


心得

发现耗时排名竟然还比较靠前。解释一下查重的语句:

select Email from Person

是因为我们的目的是要挑选出Email的变量,并且是从Person的表格中挑选出来。后面一句是本题的精髓。

group by Email having(count(*))>1

这里需要用到分组group by,我们需要按照Email进行分组,相同的就会排在一起,并进行计数(R语言中的table)。我们再挑选出计数个数大于1的邮箱,这样就完成了查重操作。


题目网址https://leetcode-cn.com/problems/duplicate-emails/description/

阅读更多
个人分类: LeetCode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭