删除重复电子邮箱

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

±—±-----------------+
| Id | Email |
±—±-----------------+
| 1 | [email protected] |
| 2 | [email protected] |
| 3 | [email protected] |
±—±-----------------+
Id 是这个表的主键。
例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:

±—±-----------------+
| Id | Email |
±—±-----------------+
| 1 | [email protected] |
| 2 | [email protected] |
±—±-----------------+

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

解决方案1

delete p1 from Person as p1,Person as p2 where p1.Email=p2.Email and p1.Id>p2.Id

解决方案2

DELETE FROM Person
WHERE Id NOT IN (   
    SELECT id FROM
   (
       SELECT MIN(Id) AS Id 
       FROM Person
       GROUP BY Email
   ) AS temp   
)

你可能感兴趣的:(计算机基础)