您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

讲解mysql如何删除重复数据

2025/4/29 21:38:49发布7次查看
本篇文章给大家介绍mysql怎么删除重复数据。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
sku对应的重量表,应该一个sku_id 对应唯一 一条重量数据,由于程序错误导致出现一样的冗余数据。只保留一条,其他的删除。
字段说明
id 自增
sku_id sku_id标识
weight 重量
假设表名:weight
查询有重复数据的列表
select sku_id,count(id) from weight group by sku_id having count(sku_id) > 1
查询重复数据里面每个最小的id
select min(id) from weight   group by sku_id having count(sku_id) > 1
查询去掉重复数据最小id的其他数据
select id,sku_id from weight where sku_id in(    select sku_id from weight   group by sku_id having count(sku_id) > 1)and id not in(    select min(id) from weight   group by sku_id having count(sku_id) > 1)
删除去掉重复数据最小id的其他数据
delete from weight where sku_id in(    select sku_id from weight   group by sku_id having count(sku_id) > 1)and id not in(    select min(id) from weight   group by sku_id having count(sku_id) > 1)
原因是:删除这个表的同时又查询了这个表,查询这个表的同时又去删除了这个表,可以理解为死锁。mysql不支持这种删除查询同一张表的操作
错误代码: 1093you can't specify target table 'weight' for update in from clause
解决办法如下:把要删除的数据查询出来做为一个第三方表,然后筛选删除。
delete from `weight` where sku_id in(    select sku_id from (select sku_id from `weight` group by sku_id having count(sku_id) > 1) table1)and id not in (    select id from (select min(id) as id from `weight` group by sku_id having count(sku_id) > 1) table2)
更新也和上面操作原理相同。
推荐学习:《mysql视频教程》
以上就是讲解mysql如何删除重复数据的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product