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存储过程之逻辑判断和条件控制
May 26 MySQL
浅析MySQL如何实现事务隔离
Jun 26 MySQL
MySQL的Query Cache图文详解
Jul 01 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
MySQL多表查询机制
Mar 17 MySQL
MySQL优化及索引解析
Mar 17 MySQL
一次Mysql update sql不当引起的生产故障记录
Apr 01 MySQL
分析MySQL优化 index merge 后引起的死锁
Apr 19 MySQL
手把手带你彻底卸载MySQL数据库
Jun 14 MySQL
MySQL详解进行JDBC编程与增删改查方法
Jun 16 MySQL
MySQL数据库之内置函数和自定义函数 function
Jun 16 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生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
javascript中this关键字详解
2016/12/12 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
pyhton列表转换为数组的实例
2018/04/04 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
python 拼接文件路径的方法
2018/10/23 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
python使用列表的最佳方案
2020/08/12 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
SQL中where和having的区别
2012/06/17 面试题
建筑专业自我鉴定
2013/10/22 职场文书
建筑设计师岗位职责
2013/11/18 职场文书
安全事故检讨书
2014/01/18 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle