跳到主要内容

196.删除重复的电子邮箱

序号题目难度
196题目链接简单

题目大意​

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

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

(对于 Pandas 用户,请注意你应该直接修改 Person 表。)

运行脚本后,显示的答案是 Person 表。驱动程序将首先编译并运行您的代码片段,然后再显示 Person 表。Person 表的最终顺序 无关紧要 。

表: Person

Column NameType
idint
emailvarchar

id 是该表的主键列(具有唯一值的列)。 该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。

示例​

输入​

Person 表:

idemail
1john@example.com
2bob@example.com
3john@example.com

输出​

idemail
1john@example.com
2bob@example.com

解释: john@example.com重复两次。我们保留最小的Id = 1。

参考答案​

with t1 as(
select email as cnt from Person group by 1 having count(1) > 1
),t2 as(
select min(id) as min_id from Person group by email
)
delete from Person
where email in (select * from t1)
and id not in (select * from t2)
;