196. 删除重复的电子邮箱
题目描述
编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
| Id | |
|---|---|
| 1 | john@example.com |
| 2 | bob@example.com |
| 3 | john@example.com |
Id 是这个表的主键。
例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:
| Id | |
|---|---|
| 1 | john@example.com |
| 2 | bob@example.com |
代码实现
delete from Person
where Id not in (select P.Id
from (select min(Id) Id from Person group by Email) P
)
代码分析
(select P.Id
from (select min(Id) Id from Person group by Email) P
)
作用是先根据Email分组,找出每个Email中最小的Id。
找出来的这些Id是不删除的,其他要删除,所以使用not in
本文介绍了一种SQL查询方法,用于删除数据库表中重复的电子邮箱记录,仅保留每个重复邮箱中ID最小的一条记录。通过子查询和分组操作,筛选出不重复的数据,并利用not in关键字实现数据清理。
1085

被折叠的 条评论
为什么被折叠?



