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 Show Profile
Apr 05 MySQL
mysql死锁和分库分表问题详解
Apr 16 MySQL
zabbix监控mysql的实例方法
Jun 02 MySQL
MySQL系列之四 SQL语法
Jul 02 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
MySQL数据库10秒内插入百万条数据的实现
Nov 01 MySQL
Mysql中一千万条数据怎么快速查询
Dec 06 MySQL
MySQL库表太大怎么办? 数据库分库分表项目实践
Apr 11 MySQL
MySQL 字符集 character
May 04 MySQL
MYSQL如何查看操作日志详解
May 30 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
May 30 MySQL
mysql数据库隔离级别详解
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 页面编码声明方法详解(header或meta)
2010/03/12 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
PHP多进程编程实例
2014/10/15 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
javascript写的日历类(基于pj)
2010/12/28 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
python的文件操作方法汇总
2017/11/10 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
过滤器的用法
2013/10/08 面试题
银行贷款承诺书
2014/03/29 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
长城导游词400字
2015/01/30 职场文书
英语教师个人总结
2015/02/09 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript
索尼ICF-5900W收音机测评
2022/04/24 无线电