SQL实现LeetCode(196.删除重复邮箱)


Posted in MySQL onAugust 07, 2021

[LeetCode] 196.Delete Duplicate Emails 删除重复邮箱

Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique emails based on its smallest Id.

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+
Id is the primary key column for this table.

For example, after running your query, the above Person table should have the following rows:

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

这道题让我们删除重复邮箱,那我们可以首先找出所有不重复的邮箱,然后取个反就是重复的邮箱,都删掉即可,那么我们如何找出所有不重复的邮箱呢,我们可以按照邮箱群组起来,然后用Min关键字挑出较小的,然后取补集删除即可:

解法一:

DELETE FROM Person WHERE Id NOT IN
(SELECT Id FROM (SELECT MIN(Id) Id FROM Person GROUP BY Email) p);

我们也可以使用内交让两个表以邮箱关联起来,然后把相同邮箱且Id大的删除掉,参见代码如下:

解法二:

DELETE p2 FROM Person p1 JOIN Person p2 
ON p2.Email = p1.Email WHERE p2.Id > p1.Id;

我们也可以不用Join,而直接用where将两表关联起来也行:

解法三:

DELETE p2 FROM Person p1, Person p2
WHERE p1.Email = p2.Email AND p2.Id > p1.Id;

类似题目:

Duplicate Emails

参考资料:

https://leetcode.com/discuss/61176/simple-solution-using-a-self-join

https://leetcode.com/discuss/48403/my-answer-delete-duplicate-emails-with-double-nested-query

到此这篇关于SQL实现LeetCode(196.删除重复邮箱)的文章就介绍到这了,更多相关SQL实现删除重复邮箱内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
SQL注入的实现以及防范示例详解
Jun 02 MySQL
MySQL系列之十三 MySQL的复制
Jul 02 MySQL
mysq启动失败问题及场景分析
Jul 15 MySQL
MySQL非空约束(not null)案例讲解
Aug 23 MySQL
浅谈MySQL函数
Oct 05 MySQL
mysql事务对效率的影响分析总结
Oct 24 MySQL
MYSQL 运算符总结
Nov 11 MySQL
MySQL限制查询和数据排序介绍
Mar 25 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
MySql中的json_extract函数处理json字段详情
Jun 05 MySQL
MySQL详细讲解变量variables的用法
Jun 21 MySQL
MySQL实现字段分割一行转多行的示例代码
Jul 07 MySQL
MySQL Shell import_table数据导入的实现
Aug 07 #MySQL
MySQL配置主从服务器(一主多从)
SQL实现LeetCode(180.连续的数字)
Aug 04 #MySQL
Mysql中where与on的区别及何时使用详析
Aug 04 #MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 #MySQL
SQL实现LeetCode(177.第N高薪水)
Aug 04 #MySQL
MySQL千万级数据表的优化实战记录
Aug 04 #MySQL
You might like
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
js图片自动切换效果处理代码
2013/05/07 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
js模糊查询实例分享
2016/12/26 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
Vue实现简单计算器
2021/01/20 Vue.js
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python匿名函数及应用示例
2019/04/09 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
经贸日语专业个人求职信范文
2013/12/28 职场文书
开业庆典邀请函
2014/01/08 职场文书
房产委托公证书
2014/04/08 职场文书
项目投资合作意向书
2014/07/29 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
外出学习心得体会范文
2016/01/18 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers