首页 > 资讯列表 > 编程/数据库 >> 数据库操作教程

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

数据库操作教程 2022-09-23 18:25:17 转载来源: 网络整理/侵权必删

目录写在前面SQL题目概述解题思路方法实现代码测试知识点小结1.内连接innerjoin(join默认就是内连接)2.左外连接leftjoin3.右外连接rightjoin4.全外连接fulljoin写在前面想要掌握好SQL,那少不了每天的练习与学习。接下来小梦会带领小伙伴们一起每天刷一道LeetCode-数据库(SQL)相关的题目,然后在文章后例举相关知识点帮助小伙伴们学习与巩固,更好的掌握SQL

写在前面

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

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

SQL题目概述

题目:

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

LeetCode原题连接

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

Person 表

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

Id 是这个表的主键。

解题思路

  • 通过  自连接  将此表与它自身连接起来,通过电子邮箱列。
  • 然后我们需要找到其他记录中具有相同电子邮件地址的更大 ID。所以我们通过ID作比较找出大的数据,把这个作为条件添加到WHERE子句中。
  • 因为我们已经得到了要删除的记录,然后我们使用DELETE语句实现。

方法实现

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

DELETE     pson1FROM     Person pson1,Person pson2WHERE     pson1.Email = pson2.Email AND pson1.Id > pson2.Id 

代码测试

进行代码测试

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

知识点小结

 ⭐内连接与外连接⭐

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

 表1 classa             

表2 classb

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的交集

2. 左外连接 left join

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

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

3. 右外连接 right join

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

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

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.idunionselect     classa.id as aid,classb.id as bid from    classa right join classb on classa.id = classb.id;

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

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


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持