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 8.0.24 安装配置方法图文教程
May 12 MySQL
MySQL中出现乱码问题的终极解决宝典
May 26 MySQL
MySQL下使用Inplace和Online方式创建索引的教程
May 26 MySQL
MySQL 8.0 Online DDL快速加列的相关总结
Jun 02 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
SQL基础查询和LINQ集成化查询
Jan 18 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
MySQL日期时间函数知识汇总
Mar 17 MySQL
MySQL实现配置主从复制项目实践
Mar 31 MySQL
MySQL创建管理RANGE分区
Apr 13 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
Mysql如何查看是否使用到索引
Dec 24 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
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
Javascript操作cookie的函数代码
2012/10/03 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
详解Angular 4.x Injector
2017/05/04 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
vue实现简单跑马灯效果
2020/05/25 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
Python 文件重命名工具代码
2009/07/26 Python
Python切片用法实例教程
2014/09/08 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Python基本socket通信控制操作示例
2019/01/30 Python
python把1变成01的步骤总结
2019/02/27 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
Series和DataFrame使用简单入门
2019/11/13 Python
pandas 对group进行聚合的例子
2019/12/27 Python
Python安装OpenCV的示例代码
2020/03/05 Python
python爬虫容易学吗
2020/06/02 Python
python中time.ctime()实例用法
2021/02/03 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
人力资源管理毕业生自荐信
2013/11/21 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
党员志愿者活动方案
2014/08/28 职场文书
小学英语教师研修感悟
2015/11/18 职场文书