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死锁和分库分表问题详解
Apr 16 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
MYSQL 表的全面总结
Nov 11 MySQL
MySQL利用UNION连接2个查询排序失效详解
Nov 20 MySQL
进阶篇之linux环境下安装MySQL数据库
Apr 09 MySQL
MySQL 执行数据库更新update操作的时候数据库卡死了
May 02 MySQL
Mysql中的触发器定义及语法介绍
Jun 25 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
Jul 15 MySQL
MySQL 原理优化之Group By的优化技巧
Aug 14 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简单静态页生成过程
2008/03/27 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
php正则表达式使用的详细介绍
2013/04/27 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
php统计文章排行示例
2014/03/04 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
php中memcache 基本操作实例
2015/05/17 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
python实现梯度下降法
2020/03/24 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
python如何实现DES加密
2020/09/21 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
介绍一下Linux中的链接
2016/06/05 面试题
化工工艺专业求职信
2013/09/22 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
python 破解加密zip文件的密码
2021/04/22 Python