力扣196(MySQL)-删除重复的电子邮箱(简单)

题目:

表: Person

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

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

查询结果格式如下所示。

示例:

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/delete-duplicate-emails
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

自连接两个表,从p1表中删除满足where条件的数据,那么where条件应该是依次拿p1表中的每条数据与p2表的每条数据做比较,既要两个邮箱相同且这时p1的id要大于p2的id,满足这个条件就删除p1表中的数据。

详细题解可以看这位老师的:点我跳转

1 delete p1
2 from Person p1, Person p2
3 where p1.email = p2.email and p1.id > p2.id;

小知识:

DELETE语句的基本语法:

1 DELETE FROM 表名
2 WHERE 筛选条件;

DELETE语句连接简化语法:

1 DELETE 表1
2 FROM 表1,表2
3 WHERE 连接条件
4 AND 删除条件;

 

posted on 2023-03-17 10:31  我不想一直当菜鸟  阅读(55)  评论(0编辑  收藏  举报