SQL-每日一题【196.删除重复的电子邮箱】

题目

表: Person

编写一个 SQL 删除语句来 删除 所有重复的电子邮件,只保留一个id最小的唯一电子邮件。

以 任意顺序 返回结果表。 (注意: 仅需要写删除语句,将自动对剩余结果进行查询)

查询结果格式如下所示。

示例 1:

解题思路

1.将此表与它自身在电子邮箱列中连接起来。

SELECT p1.*
FROM Person p1,
    Person p2
WHERE
    p1.Email = p2.Email
;

2.然后我们需要找到其他记录中具有相同电子邮件地址的更大 ID。所以我们可以像这样给 WHERE 子句添加一个新的条件。

SELECT p1.*
FROM Person p1,
    Person p2
WHERE
    p1.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;

测试结果

猜你喜欢

转载自blog.csdn.net/lucky_1314520/article/details/131510345