Mysql如何删除数据库中的重复数据 MySQL删除重复数据
在 使用MySQL 数据库的过程中,难免会出现重复数据的情况。这些重复数据可能会影响数据库的性能和可靠性。因此,我们需要学习如何删除重复的数据,以确保数据库的正确性和完整性。以下就是关于删除 MySQL 数据库中重复数据的几种方法:
Mysql删除表重复数据
表里存在唯一主键
根据多个字段删除重复数据,只保留一条数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | DELETE FROM table_name WHERE (字段1, 字段2) IN ( SELECT t.字段1, t.字段2 FROM ( SELECT 字段1, 字段2 FROM table_name GROUP BY 字段1, 字段2 HAVING count (1) > 1 ) t ) AND id NOT IN ( SELECT dt.id FROM ( SELECT min (id) AS id FROM table_name GROUP BY 字段1, 字段2 HAVING count (1) > 1 ) dt ) |
没有主键时删除重复数据
1、创建新表
①创建一个新表与目标表结构字段保持一致
1 | create table new_table_temp |
②将过滤查询的统计的数据写入到新表
1 | insert into new_table_temp |
③将旧表table_name 删除
1 | delete from table_name |
④将创建的新表名称修改为旧表名称
2、添加字段
①表结构添加一个自增且唯一字段
②按照存在唯一主键进行删除重复数据
③删除添加的自增字段
Mysql删除表中重复数据并保留一条
最近有个需求,给角色添加菜单权限,这是一个role_menu 表。
里面存放的是角色id和菜单id,是批量给一种类型角色添加,但有可能角色人为添加过,因为数据量还是比较大的,如果先查询这个有没有添加过再添加会很耗时,而统一不管有没有添加过一并添加则很快,这就需要后续给重复数据给删除掉,于是有了今天的分享。
我这里只做一个列子,工作代码安全底线大家谨记哈。
准备一张表 用的是mysql8 大家自行更改
创建表并添加四条相同的数据
接下来是我们这次的重头,我封装了一个存储过程,具体的逻辑都在注释里了,你也可以分析然后单独拿出来分批次执行sql
本文地址:http://9zoku.com/database/231.html
版权声明:本文内容来自互联网,该文版权归原作者所有。本站仅提供信息存储空间服务,不拥有文章所有权,不承担相关法律责任。若对本内容有异议或投诉请与管理员联系 5604882#qq.com(请将#换成@)。
版权声明:本文内容来自互联网,该文版权归原作者所有。本站仅提供信息存储空间服务,不拥有文章所有权,不承担相关法律责任。若对本内容有异议或投诉请与管理员联系 5604882#qq.com(请将#换成@)。