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主从复制断开的常用修复方法
Apr 07 MySQL
jdbc使用PreparedStatement批量插入数据的方法
Apr 27 MySQL
MySQL单表千万级数据处理的思路分享
Jun 05 MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
浅谈如何保证Mysql主从一致
Mar 13 MySQL
分享MySQL常用 内核 Debug 几种常见方法
Mar 17 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
Apr 26 MySQL
MySQL 条件查询的常用操作
Apr 28 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
Jul 15 MySQL
MySQL存储过程及语法详解
Aug 05 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
php打开文件fopen函数的使用说明
2013/07/05 PHP
php中namespace use用法实例分析
2016/01/22 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
Django使用Channels实现WebSocket的方法
2019/07/28 Python
python各类经纬度转换的实例代码
2019/08/08 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
多个python文件调用logging模块报错误
2020/02/12 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
Python如何实现单例模式
2016/06/03 面试题
网站客服岗位职责
2014/04/05 职场文书
干部考核评语
2014/04/29 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
百年校庆感言
2015/08/01 职场文书
接收函
2019/04/22 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
MySQL 查询速度慢的原因
2021/05/25 MySQL