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;
- 运行后,再次查询,结果如下