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 相关文章推荐
MySQL中使用or、in与union all在查询命令下的效率对比
May 26 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
Mysql数据库值的添加、修改、删除及清空操作实例
Jun 20 MySQL
MySQL令人大跌眼镜的隐式转换
Aug 23 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
深入讲解数据库中Decimal类型的使用以及实现方法
Feb 15 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
MySQL详细讲解变量variables的用法
Jun 21 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
MySQL事务的ACID特性以及并发问题方案
Jul 15 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 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
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
layui分页效果实现代码
2017/05/19 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
浅谈对yield的初步理解
2017/05/29 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
python实现扫雷小游戏
2020/04/24 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
自我评价正确写法范文
2013/12/10 职场文书
初中英语教学反思
2014/01/25 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书