如何在mysql中删除重复数据
1 2 3 4 5 6 7 8 9 10 11 12 | #分组去重法 讲重复的列进行分组 之后用min(id) #取其中最小的保留,其余的删除 -- 步骤 1: 创建临时表,保存每组最小的ID CREATE TEMPORARY TABLE tmp_keep_ids AS SELECT MIN(id) AS id FROM 重复表名 GROUP BY 重复列; -- 步骤 2: 删除原表中不在临时表中的记录 DELETE FROM 原表 WHERE id NOT IN (SELECT id FROM 临时表); -- 步骤 3: 删除临时表 DROP TEMPORARY TABLE tmp_keep_ids; |
ps: 为什么要创建临时表呢?
因为mysql不允许在删除这张表的时候用这个表作为条件查询,用原来的表做条件是会报错的
这样做的原理是什么呢?
在mysql中min()函数是取这列最小值,思路就是,先找到重复的列进行分组,然后用min()函数保留每个重复组里的最小值。就可以得出如果不在这里的id就都是重复列的id,可以删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现