首页

源码搜藏网

首页 > 开发教程 > 数据库 >

SQL删除重复的电子邮箱力扣题目解答流程

创建时间:2022-03-08 19:54  

写在前面

想要掌握好SQL,那少不了每天的练习与学习。接下来小梦会带领小伙伴们一起每天刷一道LeetCode-数据库(SQL)相关的题目,然后在文章后例举相关知识点帮助小伙伴们学习与巩固,更好的掌握SQL。

‍♂ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问,小梦定知无不言,言无不尽。

SQL删除重复的电子邮箱力扣题目解答流程

SQL题目概述

题目:

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

LeetCode原题连接

SQL删除重复的电子邮箱力扣题目解答流程

https://leetcode-cn.com/problems/delete-duplicate-emails/

Person表

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

Id 是这个表的主键。

解题思路

方法实现

根据以上解题思路,我们可以很容易写出题解。

DELETE 
    pson1
FROM 
    Person pson1,Person pson2
WHERE 
    pson1.Email = pson2.Email AND pson1.Id > pson2.Id
 

代码测试

进行代码测试

SQL删除重复的电子邮箱力扣题目解答流程

与预期结果一致,测试成功,用时166ms

SQL删除重复的电子邮箱力扣题目解答流程

知识点小结

内连接与外连接

小梦用极简单的方式带小伙伴们过一遍内连接与外连接。

表1 classa

SQL删除重复的电子邮箱力扣题目解答流程

表2 classb

SQL删除重复的电子邮箱力扣题目解答流程

1. 内连接 inner join (join 默认就是内连接)

表1与表2的交集,用上面两个表演示一下

select 
    classa.id as aid,classb.id as bid 
from 
    classa 
inner join classb on classa.id = classb.id;

查询的结果是classa与classb的交集

SQL删除重复的电子邮箱力扣题目解答流程

2. 左外连接 left join

结果集保留左表的所有行,但右表只包含与左表匹配的行。右表相应的空行为NULL值。

select 
    classa.id as aid,classb.id as bid 
from 
    classa 
left join classb on classa.id = classb.id;

SQL删除重复的电子邮箱力扣题目解答流程

3. 右外连接 right join

结果集保留右表的所有行,但左表只包含与右表匹配的行。左表相应的空行为NULL值。

select 
    classa.id as aid,classb.id as bid 
from 
    classa 
right join classb on classa.id = classb.id;

SQL删除重复的电子邮箱力扣题目解答流程

4. 全外连接 full join

会把两个表所有的行都显示在结果表中。

select 
    classa.id as aid,classb.id as bid 
from 
    classa 
full join classb on classa.id = classb.id;

小伙伴们注意啦!!!

MySQL不支持full join!!!MySQL不支持full join!!!MySQL不支持full join!!!

重要的事情要说三遍!!!那怎么实现和full join一样的效果呢?那就要通过使用union来实现,具体实现SQL语句如下

select 
    classa.id as aid,classb.id as bid 
from 
    classa left join classb on classa.id = classb.id
union
select 
    classa.id as aid,classb.id as bid 
from 
   classa right join classb on classa.id = classb.id;

SQL删除重复的电子邮箱力扣题目解答流程

到此这篇关于SQL删除重复的电子邮箱解答流程的文章就介绍到这了,更多相关SQL 删除重复邮箱内容请搜索源码搜藏网以前的文章或继续浏览下面的相关文章希望大家以后多多支持源码搜藏网!

上一篇:sqlserver数据库加密后无法使用MDF,LDF,log文件名称被修改的数据恢复
下一篇:Postgres中UPDATE更新语句源码分析

相关内容

热门推荐

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
/ 10