SQL每日一题:删除重复电子邮箱

题干

表: Person

±------------±--------+

| Column Name | Type |

±------------±--------+

| id | int |

| email | varchar |

±------------±--------+

id 是该表的主键列(具有唯一值的列)。

该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。

编写解决方案 删除 所有重复的电子邮件,只保留一个具有最小 id 的唯一电子邮件。

(对于 SQL 用户,请注意你应该编写一个 DELETE 语句而不是 SELECT 语句。)

(对于 Pandas 用户,请注意你应该直接修改 Person 表。)Person 表的最终顺序 无关紧要。返回结果格式如下示例所示。

示例

解答

使用delete和where语句,通过将此表与自身在 Email 列上连接,然后找到具有相同电子邮件地址的其他记录中较大的 id。

sql 复制代码
delete p1 from person p1, person p2 
where p1.email=p2.email and p1.id>p2.id
相关推荐
IT摆渡者3 小时前
MySQL性能巡检脚本分析报告
数据库·mysql
Lyyaoo.3 小时前
Redis基础
数据库·redis·缓存
杨云龙UP4 小时前
ODA登录ODA Web管理界面时提示Password Expired的处理方法_20260423
linux·运维·服务器·数据库·oracle
解救女汉子4 小时前
SQL触发器如何获取触发源应用名_利用APP_NAME函数追踪
jvm·数据库·python
陈皮糖..5 小时前
27 届运维实习笔记|第三、四周:从流程熟练到故障排查,企业运维实战深化
运维·笔记·sql·nginx·ci/cd·云计算·jenkins
weixin_520649875 小时前
数据库函数
数据库
Bert.Cai6 小时前
MySQL LPAD()函数详解
数据库·mysql
OnlyEasyCode7 小时前
Navicat 任务自动备份指定数据库
数据库
if else7 小时前
Redis 哨兵集群部署方案
数据库·redis
yejqvow127 小时前
Pandas 高效实现组内跨行时间戳匹配与布尔标记
jvm·数据库·python