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 EXPLAIN输出列的详细解释
May 12 MySQL
MySQL如何构建数据表索引
May 13 MySQL
详解MySQL连接挂死的原因
May 18 MySQL
MySQL 常见的数据表设计误区汇总
Jun 07 MySQL
Mysql 如何查询时间段交集
Jun 08 MySQL
MySQL 数据类型详情
Nov 11 MySQL
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
MySQL中B树索引和B+树索引的区别详解
Mar 03 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
MySQL一劳永逸永久支持输入中文的方法实例
Aug 05 MySQL
MySQL自定义函数及触发器
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
杏林同学录(六)
2006/10/09 PHP
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
php使用百度天气接口示例
2014/04/22 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
(function(){})()的用法与优点
2007/03/11 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
Element Tooltip 文字提示的使用示例
2020/07/26 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
python线程、进程和协程详解
2016/07/19 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
Python try except else使用详解
2021/01/12 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
挂靠协议书范本
2014/04/22 职场文书
国际金融专业自荐信
2014/07/05 职场文书