当前位置:   article > 正文

leetcode 196. 删除重复的电子邮箱 / Delete Duplicate Emails--表(行)的删除

leetcode 196. 删除重复的电子邮箱 / Delete Duplicate Emails--表(行)的删除

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

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+
Id 是这个表的主键
例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+
 

提示:

执行 SQL 之后,输出是整个 Person 表。
使用 delete 语句。

来源:力扣(LeetCode
链接:https://leetcode-cn.com/problems/delete-duplicate-emails
 

  1. delete
  2. from Person p1
  3. where (p1.Id NOT IN (select p22.id
  4. from (select min(p2.Id) id, p2.Email
  5. from Person p2
  6. group by Email) p22
  7. )
  8. );

注意如果去除 select p22.id 这层(如下所示)会报错,因为子查询返回的结果实际上有两列:Id和Email,而NOT IN后面的只查询一列。

  1. delete
  2. from Person p1
  3. where (p1.Id NOT IN (select min(p2.Id) id
  4. from Person p2
  5. group by Email) p22
  6. );

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/799633
推荐阅读
相关标签
  

闽ICP备14008679号