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 20 MySQL
详解MySQL的半同步
Apr 22 MySQL
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
解读MySQL的客户端和服务端协议
May 10 MySQL
MySQL索引知识的一些小妙招总结
May 10 MySQL
mysql在项目中怎么选事务隔离级别
May 25 MySQL
新手入门Mysql--sql执行过程
Jun 20 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
Dec 06 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
MySQL 数据 data 基本操作
May 04 MySQL
MySQL范围查询优化的场景实例详解
Jun 10 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
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP 万年历实现代码
2012/10/18 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
php生成curl命令行的方法
2015/12/14 PHP
JavaScript 参考教程
2006/12/29 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
Python中zip函数如何使用
2020/06/04 Python
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
护士自我评价范文
2014/01/25 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
我的中国心演讲稿
2014/09/04 职场文书
普通党员整改措施
2014/10/24 职场文书
校车安全管理责任书
2015/05/11 职场文书
老兵退伍感言
2015/08/03 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
这样写python注释让代码更加的优雅
2021/06/02 Python
解析redis hash应用场景和常用命令
2021/08/04 Redis
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL