LeetCode-182. 查找重复的电子邮箱( Consecutive Numbers)。

本文介绍如何使用SQL查询找出Person表中所有重复的电子邮箱,提供了两种方法:一是使用GROUP BY和临时表;二是直接利用GROUP BY和HAVING条件进行筛选。

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

示例:

+----+---------+
| Id | Email   |
+----+---------+
| 1  | a@b.com |
| 2  | c@d.com |
| 3  | a@b.com |
+----+---------+
根据以上输入,你的查询应返回以下结果:

+---------+
| Email   |
+---------+
| a@b.com |
+---------+
说明:所有电子邮箱都是小写字母。

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/duplicate-emails

解题:

方法1:使用GROUP BY 和临时表,分组后判断每个组超过1一个就是有重复的。

首先查出,每个email有几个。

Selet Email,count(Email) as num
from Person
group by Email;

将上边的结果作为临时表。

select Email from
(
  select Email, count(Email) as num
  from Person
  group by Email
) as statistic
where num > 1;

方法2:使用 GROUP BY 和 HAVING 条件

向 GROUP BY 添加条件的一种更常用的方法是使用 HAVING 子句,该子句更为简单高效。having用于组

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

相关知识:

count(*) 它返回检索行的数目, 不论其是否包含 NULL值。

count(DISTINCT 字段),返回不同的非NULL值数目。

临时表,类似于普通正常表一样。思路可以先建一个查询,结果就可以当作一个临时表,在查询这个临时表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值