力扣資料庫題目182查詢重複的電子郵箱
阿新 • • 發佈:2020-12-05
力扣資料庫題目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問題。