1. 程式人生 > 資料庫 >力扣資料庫題目182查詢重複的電子郵箱

力扣資料庫題目182查詢重複的電子郵箱

力扣資料庫題目182查詢重複的電子郵箱

題目

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

示例:

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

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

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

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

來源:力扣(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問題。