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 相关文章推荐
教你用eclipse连接mysql数据库
Apr 22 MySQL
MySQL COUNT函数的使用与优化
May 10 MySQL
探究Mysql模糊查询是否区分大小写
Jun 11 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
Jun 26 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 MySQL
MySQL读取JSON转换的方式
Mar 18 MySQL
mysql 乱码 字符集latin1转UTF8
Apr 19 MySQL
MySQL 逻辑备份 into outfile
May 15 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 MySQL
mysql全面解析json/数组
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
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
php对数组排序代码分享
2014/02/24 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
javascript+xml技术实现分页浏览
2008/07/27 Javascript
JS 对象介绍
2010/01/20 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
Three.js基础部分学习
2017/01/08 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python搜索指定目录的方法
2015/04/29 Python
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
python的文件操作方法汇总
2017/11/10 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
商务日语专业毕业生求职信
2013/10/26 职场文书
班级聚会策划书
2014/01/16 职场文书
酒后驾车标语
2014/06/30 职场文书
把77A收信机改造成收音机
2022/04/05 无线电