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 06 MySQL
mysql死锁和分库分表问题详解
Apr 16 MySQL
MySQL 表空间碎片的概念及相关问题解决
May 07 MySQL
MySQL 常见的数据表设计误区汇总
Jun 07 MySQL
解析MySQL binlog
Jun 11 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 MySQL
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 MySQL
MySQL创建管理子分区
Apr 13 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
MySQL如何使备份得数据保持一致
May 02 MySQL
mysql通过group by分组取最大时间对应数据的两种有效方法
Sep 23 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 CURL用法的深入分析
2013/06/09 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
php实现上传图片文件代码
2015/07/19 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
javascript 正则表达式相关应介绍
2012/11/27 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
Python调用命令行进度条的方法
2015/05/05 Python
Python生成密码库功能示例
2017/05/23 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
python 阶乘累加和的实例
2019/02/01 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
纠纷协议书
2014/04/16 职场文书
期末学生评语大全
2014/04/24 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
高校教师个人总结
2015/02/10 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python