Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
leetcode刷题182查找重复的电子邮箱
前文
本文为leetcode数据库类型应用哦个,题目序号为182,主要考察数据库查询的相关知识,题目链接为https://leetcode-cn.com/problems/duplicate-emails/。
题目信息
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
示例:
+----+---------+ | Id | Email | +----+---------+ | 1 | a@b.com | | 2 | c@d.com | | 3 | a@b.com | +----+---------+ 根据以上输入,你的查询应返回以下结果:
+---------+ | Email | +---------+ | a@b.com | +---------+
解题思路
根据题目信息,得知现在有一张表中包含若干电子邮件,现在我们需要做的就是查找所有重复的电子邮件并返回。根据该描述,显然可以知道我们要查找的内容为所有出现超过1次的邮件信息。根据该信息,会想到mysql中group by关键字。这个关键字一般用作统计或筛选,会将条件中相同的数据形成分组。那么我们针对该题目,完全可以先对邮件地址进行分组。同时,分组后要得到每组中邮件的数目。有了这个信息后,也就转化成了分组后的结果中有多少邮件数目大于1的分组,只需要返回大于1分组的邮件内容即可。因此我们把分组后的信息视作一个新表,从中直接用select语句进行查询,即可得到该题目所需要的答案。
解题答案
select Email from (select Email,count(Email) as aa from Person group by Email) b where b.aa > 1
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。