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 相关文章推荐
left join、inner join、right join的区别
Apr 05 MySQL
MySQL sql_mode修改不生效的原因及解决
May 07 MySQL
修改MySQL的默认密码的四种小方法
May 26 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
sql注入教程之类型以及提交注入
Aug 02 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
MySQL中一条SQL查询语句是如何执行的
Apr 08 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 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
中英文字符串翻转函数
2008/12/09 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
PHP 裁剪图片
2021/03/09 PHP
菜单效果
2006/10/14 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
一个获取第n个元素节点的js函数
2014/09/02 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
js实现整体缩放页面适配移动端
2020/03/31 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
python tkinter窗口最大化的实现
2019/07/15 Python
Django如何实现上传图片功能
2019/08/16 Python
python多线程实现TCP服务端
2019/09/03 Python
wxPython实现画图板
2020/08/27 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
关工委先进个人事迹材料
2014/05/23 职场文书
擅自离岗检讨书
2014/09/12 职场文书
计算机实训报告总结
2014/11/05 职场文书
员工旷工检讨书
2015/08/15 职场文书
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers