首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 刪除重複郵箱查詢:Duplicate Emails 題目解析

     編輯:MySQL 綜合教學

MySQL 刪除重複郵箱查詢:Duplicate Emails 題目解析

在資料庫操作中,查找重複資料是常見需求。本文針對 LeetCode 風格的「Duplicate Emails」題目,詳細解析如何使用 MySQL 查詢 Person 表中重複出現的電子郵件地址。

題目描述

給定一個名為 Person 的表,結構如下:

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

需編寫 SQL 查詢,找出所有重複的郵箱。對於上述範例,預期結果為:

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

解決方案

核心思路是自連接:將表與自身連接,比較不同 ID 但相同 Email 的記錄。

# Write your MySQL query statement below
SELECT DISTINCT a.Email
FROM Person a
JOIN Person b ON a.Email = b.Email
WHERE a.Id <> b.Id

關鍵點解析

  • 自連接:Person a JOIN Person b 讓同一張表參與兩次查詢,分別作為左右表。
  • 去重:DISTINCT 確保輸出結果不重複。
  • 條件過濾:a.Id <> b.Id 排除同一行與自身比較的情況,僅保留真正重複的記錄。

替代寫法

亦可使用 GROUP BY 配合 HAVING 實現:

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

此寫法語意更清晰,效能通常亦不錯,視索引情況而定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved