182. 查找重複的電子郵箱
- 2019 年 10 月 6 日
- 筆記
題目
編寫一個 SQL 查詢,查找 Person 表中所有重複的電子郵箱。
示例:
+----+---------+ | Id | Email | +----+---------+ | 1 | [email protected] | | 2 | [email protected] | | 3 | [email protected] | +----+---------+ 根據以上輸入,你的查詢應返回以下結果: +---------+ | Email | +---------+ | [email protected] | +---------+ 說明:所有電子郵箱都是小寫字母。
題解
mysql查看重複數據, 可以按照email進行分組,然後使用having子句過濾count>1的數據,查詢的結果就是重複的數據
代碼
# 創建表 CREATE TABLE `Person` ( `id` int(11) NOT NULL, `email` varchar(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; # 插入測試數據 insert into Person (id,email) value (1,"[email protected]"); insert into Person (id,email) value (2,"[email protected]"); insert into Person (id,email) value (3,"[email protected]"); # 查找重複數據 select email from Person group by Email having count(email) > 1
運行結果

總結
- 當group by 與聚合函數配合使用時,功能為分組後計算
- 當group by 與 having配合使用時,功能為分組後過濾,獲得滿足條件的分組的返回結果。
- having與where區別:where過濾行,having過濾組