1、问题描述
编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
2、 创建表格
- 代码
create table if not exists Person(Id varchar(8), Email varchar(255));
delete * from Person where 1=1;
// truncate table Person;
insert into Person (Id, Email) values( '1', 'john@example.com' );
insert into Person (Id, Email) values('2', 'bob@example.com');
insert into Person (Id, Email) values('3', 'john@example.com');
- 表格

3、解决问题
- 代码
delete p2 from Person p1, Person p2 where p1.Email=p2.Email and p1.Id<p2.Id;
- 运行后,再次查询,结果如下

这篇博客介绍了如何使用SQL查询从Person表中删除所有重复的电子邮箱,仅保留每个邮箱对应Id最小的记录。示例代码展示了通过比较Person表中相同邮箱的不同Id,删除Id较大的记录,从而达到保留唯一邮箱的目的。
1197

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



