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的MVCC多版本并发控制的实现
Apr 14 MySQL
MySql存储过程之逻辑判断和条件控制
May 26 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
MySQL笔记 —SQL运算符
Jan 18 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
Feb 24 MySQL
MySQL优化常用的19种有效方法(推荐!)
Mar 17 MySQL
Mysql使用全文索引(FullText index)的实例代码
Apr 03 MySQL
MySQL GTID复制的具体使用
May 20 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
mysql查看表结构的三种方法总结
Jul 07 MySQL
MySQL中LAG()函数和LEAD()函数的使用
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
phpize的深入理解
2013/06/03 PHP
PHP多维数组排序array详解
2017/11/21 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
信号生成及DFT的python实现方式
2020/02/25 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
万年牢教学反思
2014/02/15 职场文书
五一口号
2014/06/19 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python