技术文摘
MySQL 去除重复数据并保留最小 id
2025-01-15 03:43:45 小编
MySQL去除重复数据并保留最小id
在MySQL数据库管理中,经常会遇到数据表中存在重复数据的情况,这不仅占用额外的存储空间,还可能影响数据查询的准确性和效率。有时候,我们需要去除这些重复数据,同时保留具有最小id的记录。下面就来详细探讨如何实现这一操作。
我们要明确问题场景。假设有一个名为“employees”的数据表,其中包含“id”(员工唯一标识)、“name”(员工姓名)、“department”(所在部门)等字段。由于各种原因,表中出现了重复的员工记录,我们的目标是只保留每个员工的一条记录,并且这条记录的“id”是所有重复记录中最小的。
一种常见的方法是使用临时表。具体步骤如下:首先,创建一个临时表,这个临时表的结构与原表相同。例如:
CREATE TEMPORARY TABLE temp_employees AS
SELECT MIN(id) AS id, name, department
FROM employees
GROUP BY name, department;
上述代码通过“GROUP BY name, department”对重复的员工信息进行分组,然后使用“MIN(id)”选出每组中“id”最小的记录,并将这些记录插入到临时表“temp_employees”中。
接下来,清空原表中的数据:
TRUNCATE TABLE employees;
最后,将临时表中的数据插回到原表:
INSERT INTO employees (id, name, department)
SELECT id, name, department
FROM temp_employees;
这样,原表“employees”中就只保留了每个员工的一条记录,且“id”为最小。
另一种方式是使用DELETE语句结合子查询。代码如下:
DELETE FROM employees
WHERE id NOT IN (
SELECT min_id
FROM (
SELECT MIN(id) AS min_id
FROM employees
GROUP BY name, department
) AS subquery
);
这条语句通过子查询找出每组重复记录中的最小“id”,然后在外部DELETE语句中删除那些“id”不在最小“id”集合中的记录。
通过上述方法,我们可以有效地在MySQL中去除重复数据并保留最小id,确保数据库中的数据更加整洁、高效,为后续的数据查询和分析提供更好的支持。
- 多任务学习于转转主搜精排的运用
- Python 自然语言处理的 12 个实用案例应用
- 别叫我 Hooks ,叫我 Composables !
- HashMap 底层核心数据结构红黑树速通指南
- PyTorch 与 NumPy 结合的八种高效方式
- 优化计算机视觉与图像处理的图像格式:OpenCV 里的 PNG、JPG 和 WEBP
- 十分钟,快速了解 Lua 脚本!
- 尤雨溪的二次元属性,揭开 Vue 版本名称的神秘面纱
- SpringBoot 常用注解大全
- 告别服务器端渲染!Prerender.io - 实现 SPA 搜索引擎优化
- 一文助你迅速掌握 DDD 领域驱动设计
- Javascript 事件总线库 mitt 源码解析指南
- 内省比反射更出色,你是否知晓?
- 反射与元编程,你是否已掌握?
- 自主实现 Agent 统计 API 接口调用耗时