SQL操作-删除重复邮件,保留最低唯一ID邮件

内容纲要

需求描述

From the following table, write a SQL query to remove all the duplicate emails of employees keeping the unique email with the lowest employee id. Return employee id and unique emails.

从下表中,编写一个 SQL 查询来删除员工的所有重复电子邮件,并保留具有最低员工 ID 的唯一电子邮件。 返回员工 ID 和唯一电子邮件。

table: employees

employee_id employee_name email_id
101 Liam Alton li.al@abc.com
102 Josh Day jo.da@abc.com
103 Sean Mann se.ma@abc.com
104 Evan Blake ev.bl@abc.com
105 Toby Scott jo.da@abc.com

解决方案

以下是一个可以满足需求的 SQL 查询,该查询利用了子查询和 "NOT IN" 关键字:

DELETE FROM employees
WHERE employee_id NOT IN (
    SELECT MIN(employee_id)
    FROM employees
    GROUP BY email_id
);

这个查询做了什么呢?

子查询:

SELECT MIN(employee_id)
FROM employees
GROUP BY email_id

这个子查询对 email_id 进行分组,并从每组中选择具有最小 employee_id 的记录。

然后,外部查询将删除不在这个子查询结果集中的所有记录,即删除所有除最小 employee_id 外的具有重复 email_id 的记录。

执行此查询后,employees 表将只包含具有唯一 email_id 的员工,并且在存在重复 email_id 的情况下,只保留具有最小 employee_id 的员工。

注意❗ : 在执行删除操作前,建议先做好数据备份,以防不可预知的错误发生。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward