题目
表: Person
编写一个 SQL 删除语句来 删除 所有重复的电子邮件,只保留一个id最小的唯一电子邮件。
以 任意顺序 返回结果表。 (注意: 仅需要写删除语句,将自动对剩余结果进行查询)
查询结果格式如下所示。
示例 1:
解题思路
1.将此表与它自身在电子邮箱列中连接起来。
SELECT p1.* FROM Person p1,Person p2 WHEREp1.Email = p2.Email ;
2.然后我们需要找到其他记录中具有相同电子邮件地址的更大 ID。所以我们可以像这样给
WHERE
子句添加一个新的条件。SELECT p1.* FROM Person p1,Person p2 WHEREp1.Email = p2.Email AND p1.Id > p2.Id ;
3.因为是要删除,所以我们将 select 改为 delete
代码实现
delete p1 from Person p1,Person p2
where p1.Email = p2.Email and p1.id > p2.id;
测试结果