LeetCode Database 196 删除重复的电子邮箱

1. 题目说明

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

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

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

1
2
3
4
5
6
+----+------------------+
| Id | Email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
+----+------------------+

2. 题解

2.1. MySQL(DELETE自连接)

1
2
3
4
5
6
7
8
9
-- 方式1
DELETE tb1
FROM Person tb1, Person tb2
WHERE tb1.Email = tb2.Email AND tb1.Id > tb2.Id

-- 方式2
DELETE FROM p1
USING Person p1,Person p2
WHERE p1.Email = p2.Email and p1.Id > p2.Id
panchaoxin wechat
关注我的公众号
支持一下