大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。
文章目录
- 前言
- 一、题目:182. 查找重复的电子邮箱
- 二、解题
- 1.正确示范①
- 提交SQL
- 运行结果
- 2.正确示范②
- 提交SQL
- 运行结果
- 3.正确示范③
- 提交SQL
- 运行结果
- 4.正确示范④
- 提交SQL
- 运行结果
- 总结
前言
一、题目:182. 查找重复的电子邮箱
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
示例:
+----+---------+
| Id | Email |
+----+---------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+----+---------+
根据以上输入,你的查询应返回以下结果:
+---------+
| Email |
+---------+
| a@b.com |
+---------+
说明:所有电子邮箱都是小写字母。
二、解题
1.正确示范①
提交SQL
select Email
from Person
group by Email
having count(1)>1
运行结果
2.正确示范②
提交SQL
select Email
from Person
group by Email
having count(Email)>1
运行结果
3.正确示范③
提交SQL
select Email
from Person
group by Email
having count(*)>1
运行结果
4.正确示范④
提交SQL
select Email from(
select Email,
count(1) num
# count(*) num
# count(Email) num
from Person
group by Email
) e
where num>1
运行结果
总结
正确示范①②③思路:
使用 GROUP BY 和 HAVING 条件;
HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
正确示范④ 思路:
使用 GROUP BY 和临时表;
count(1)、count(Email)、count(*)在该题目中都适用。