菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
279
0

力扣数据库题目182查找重复的电子邮箱

原创
05/13 14:22
阅读数 34136

力扣数据库题目182查找重复的电子邮箱

题目

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

示例:

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

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

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

说明:所有电子邮箱都是小写字母。

来源:力扣(LeetCode)

方案一

分组

SELECT email
FROM test.person
GROUP BY email
HAVING count(*) > 1

方案二

where子查询

SELECT DISTINCT email
FROM test.person t
WHERE (SELECT count(*) FROM test.person WHERE email = t.email) > 1

方案三

exists判断

SELECT DISTINCT email
FROM test.person t
WHERE EXISTS(SELECT email FROM test.person WHERE email = t.email AND id <> t.id)

方案四

表连接

SELECT DISTINCT a.email
FROM test.person a
INNER JOIN test.person b ON a.email = b.email AND a.id > b.id

总结

一般情况下查询可以先考虑简单查【标准单表查询】,再考虑子查询【SELECT或WHERE子查询】,最后考虑表连接。基本上表连接可以解决几乎所有SQL问题。

发表评论

0/200
279 点赞
0 评论
收藏