力扣資料庫題目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問題,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/230255.html
標籤:MySQL
上一篇:MySQL資料庫基礎學習筆記
