春招打卡d17n32-leetcode刷题182查找重复的电子邮箱

133 阅读1分钟

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

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。