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