LeetCode:Duplicate Emails - 重複出現的Email

一、題目名稱sql

Duplicate Emails(重複出現的Email)數據庫

二、題目地址命令行

https://leetcode.com/problems/duplicate-emails/code

三、題目內容leetcode

有一個數據表包括Id和Email兩列,找出數據表內Email列內容重複出現的Email數據。get

例如,現有一個表Person內容以下:class

+----+---------+
| Id | Email   |
+----+---------+
| 1  | a@b.com |
| 2  | c@d.com |
| 3  | a@b.com |
+----+---------+

 

那麼查詢獲得的結果集爲:email

+---------+
| Email   |
+---------+
| a@b.com |
+---------+

 

四、初始化數據庫腳本數據

在MySQL數據庫中創建一個名爲LEETCODE的數據庫,用MySQL命令行中的source命令執行下面腳本:腳本

-- 執行腳本前必須創建名爲LEETCODE的DATABASE
USE LEETCODE;

DROP TABLE IF EXISTS Person;
CREATE TABLE Person (
  Id INT NOT NULL PRIMARY KEY,
  Email VARCHAR(50)
);

INSERT INTO Person (Id, Email) VALUES (1, 'a@b.com');
INSERT INTO Person (Id, Email) VALUES (2, 'c@d.com');
INSERT INTO Person (Id, Email) VALUES (3, 'a@b.com');
INSERT INTO Person (Id, Email) VALUES (4, 'x@y.com');
INSERT INTO Person (Id, Email) VALUES (5, 'x@y.com');

五、解題SQL1

以Email列對數據進行分組,找出全部組內數據數量大於1的Email

SELECT DISTINCT Email
FROM Person
GROUP BY Email
HAVING COUNT(*) > 1

六、解題SQL2

換一個角度考慮,若是兩行數據,Id不一樣,Email相同,則選出這個Email,再對選出的全部Email進行去重。

SELECT DISTINCT A.Email
FROM Person AS A, Person AS B
WHERE A.Id <> B.Id AND A.Email = B.Email

END

相關文章
相關標籤/搜索