加载中...
196-删除重复的电子邮箱(Delete Duplicate Emails)
发表于:2021-12-03 | 分类: 简单
字数统计: 481 | 阅读时长: 2分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/delete-duplicate-emails

英文原文

Table: Person

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| email       | varchar |
+-------------+---------+
id is the primary key column for this table.
Each row of this table contains an email. The emails will not contain uppercase letters.

 

Write an SQL query to delete all the duplicate emails, keeping only one unique email with the smallest id.

Return the result table in any order.

The query result format is in the following example.

 

Example 1:

Input: 
Person table:
+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+
Output: 
+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+
Explanation: john@example.com is repeated two times. We keep the row with the smallest Id = 1.

中文题目

编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+
Id 是这个表的主键。

例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+

 

提示:

  • 执行 SQL 之后,输出是整个 Person 表。
  • 使用 delete 语句。

通过代码

官方题解

方法:使用 DELETEWHERE 子句

算法

我们可以使用以下代码,将此表与它自身在电子邮箱列中连接起来。

[NxFCySp5-MySQL]
SELECT p1.* FROM Person p1, Person p2 WHERE p1.Email = p2.Email ;

然后我们需要找到其他记录中具有相同电子邮件地址的更大 ID。所以我们可以像这样给 WHERE 子句添加一个新的条件。

[ipkbLsZR-MySQL]
SELECT p1.* FROM Person p1, Person p2 WHERE p1.Email = p2.Email AND p1.Id > p2.Id ;

因为我们已经得到了要删除的记录,所以我们最终可以将该语句更改为 DELETE

[ec2Spa6g-MySQL]
DELETE p1 FROM Person p1, Person p2 WHERE p1.Email = p2.Email AND p1.Id > p2.Id

统计信息

通过次数 提交次数 AC比率
108063 162527 66.5%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
195-第十行(Tenth Line)
下一篇:
197-上升的温度(Rising Temperature)
本文目录
本文目录