力扣數據庫 - 182.查找重複的電子郵箱

SQL架構

Create table If Not Exists Person (Id int, Email varchar(255))
Truncate table Person
insert into Person (Id, Email) values ('1', '[email protected]')
insert into Person (Id, Email) values ('2', '[email protected]')
insert into Person (Id, Email) values ('3', '[email protected]')

題目描述

編寫一個 SQL 查詢,查找 Person 表中所有重複的電子郵箱。

+----+---------+
| Id | Email   |
+----+---------+
| 1  | [email protected] |
| 2  | [email protected] |
| 3  | [email protected] |
+----+---------+

根據以上輸入,你的查詢應返回以下結果:

+---------+
| Email   |
+---------+
| [email protected] |
+---------+

說明:所有電子郵箱都是小寫字母。

解法

方法1:使用GROUP BY + COUNT(*)

SELECT Email 
FROM Person 
GROUP BY Email 
HAVING COUNT(Email)>1

耗時:345ms

方法2:使用WHERE

SELECT DISTINCT a.Email
FROM Person a,Person b
WHERE a.Email=b.Email
AND a.Id<>b.Id;

耗時:404 ms

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章