LeetCode每天一题

196. 删除重复的电子邮箱

题目:

196. 删除重复的电子邮箱

难度简单251

编写一个 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 |
+----+------------------+

提示:

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

解题思路

首先我们先尝试一下来查询出要删除的数据

这里的查询需要用到自身查询

1
2
3
select p1
from Person p1,Person p2
where p1.Email=p2.Email and p1.Id>p2.Id;

接下来把select改为delete即可。

答案解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Write your MySQL query statement below
delete p1
from Person as p1,Person as p2
where p1.Email=p2.Email and p1.Id>p2.Id;


已完成
执行用时:106 ms
输入
{"headers": {"Person": ["Id", "Email"]}, "rows": {"Person": [[1, "john@example.com"], [2, "bob@example.com"], [3, "john@example.com"]]}}
输出
{"headers": ["Id", "Email"], "values": [[1, "john@example.com"], [2, "bob@example.com"]]}
预期结果
{"headers": ["Id", "Email"], "values": [[1, "john@example.com"], [2, "bob@example.com"]]}
点击查看
-------------------本文结束 感谢您的阅读-------------------