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 相关文章推荐
Windows10下安装MySQL8
Apr 06 MySQL
一篇文章弄懂MySQL查询语句的执行过程
May 07 MySQL
简单了解 MySQL 中相关的锁
May 25 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
May 27 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
Mysql systemctl start mysqld报错的问题解决
Jun 03 MySQL
SQL实现LeetCode(175.联合两表)
Aug 04 MySQL
SQL实现LeetCode(176.第二高薪水)
Aug 04 MySQL
MySQL数据库索引的最左匹配原则
Nov 20 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
详解Mysql数据库平滑扩容解决高并发和大数据量问题
May 25 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脚本的10个技巧(1)
2006/10/09 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
jquery easyui使用心得
2014/07/07 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
js获取url传值的方法
2015/12/18 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
wxpython 学习笔记 第一天
2009/03/16 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
应聘医药销售自荐书范文
2014/02/08 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
师范生教育见习总结
2015/06/23 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
Vue.Draggable实现交换位置
2022/04/07 Vue.js