[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间加上删除表的别名
总结:无