[LeetCode] #196 删除重复的电子邮箱

编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

 例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:

找重复邮箱中id最小的,删除不是最小的

DELETE FROM Person WHERE Id NOT IN (SELECT * FROM (SELECT MIN(Id) FROM Person GROUP BY Email) t);

将此表与它自身在电子邮箱列中连接起来,找到其他记录中具有相同电子邮件地址的更大 ID

DELETE t1 FROM Person t1,Person t2 WHERE t1.Email = t2.Email AND t1.Id > t2.Id

知识点:

将SELECT出的结果再通过中间表SELECT一遍,可以避免You can't specify target table for update in FROM clause错误

delete使用别名的时候,要在delete和from间加上删除表的别名

总结:

posted @ 2021-09-07 17:21  1243741754  阅读(53)  评论(0编辑  收藏  举报