🎈写在前面
🙋♂️大家好呀,我是超梦。大家可以叫我小梦~
小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的。想要掌握好SQL,那少不了每天的练习与学习。接下来小梦会带领小伙伴们一起每天刷一道LeetCode-数据库(SQL)相关的题目,然后在文章后例举相关知识点帮助小伙伴们学习与巩固,更好的掌握SQL。
🙋♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问,小梦定知无不言,言无不尽。
⭐目录⭐
🎈写在前面
⭐SQL题目概述⭐
⭐解题思路⭐
⭐方法实现⭐
⭐代码测试⭐
⭐知识点小结⭐
⭐SQL题目概述⭐
题目:
编写一个 SQL 查询,来删除 Person
表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。LeetCode原题连接
Person 表
+----+------------------+
| Id | Email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
| 3 | john@example.com |
+----+------------------+
Id 是这个表的主键。
⭐解题思路⭐
- 通过自连接将此表与它自身连接起来,通过电子邮箱列。
- 然后我们需要找到其他记录中具有相同电子邮件地址的更大 ID。所以我们通过ID作比较找出大的数据,把这个作为条件添加到WHERE子句中。
- 因为我们已经得到了要删除的记录,然后我们使用DELETE语句实现。
⭐方法实现⭐
根据以上解题思路,我们可以很容易写出题解。
DELETE pson1 FROM Person pson1,Person pson2 WHERE 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;
这篇文章如果对小伙伴们有帮助的话,希望点个赞支持一下~ 十分感谢~