MySQL   发布时间:2022-05-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了讲解mysql如何删除重复数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本篇文章给大家介绍MysqL怎么删除重复数据。有一定的参价值,有需要的朋友可以参一下,希望对大家有所帮助。

@H_404_5@sku对应的重量表,应该一个sku_id 对应唯一 一条重量数据,由于程序错误导致出现一样的冗余数据。只保留一条,其他的删除。

字段说明
id自增
sku_idsku_id标识
weight重量
@H_404_5@假设表名:weight

@H_404_5@查询有重复数据的列表

SELECT sku_id,COUNT(id) FROM weight GROUP BY sku_id HAVING COUNT(sku_id) > 1
@H_404_5@查询重复数据里面每个最小的id

SELECT min(id) FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1
@H_404_5@查询去掉重复数据最小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)
@H_404_5@删除去掉重复数据最小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)
@H_404_5@原因是:删除这个表的同时又查询了这个表,查询这个表的同时又去删除了这个表,可以理解为死锁。MysqL不支持这种删除查询同一张表的操作

错误代码: 1093You can't specify target table 'weight' for update in FROM clause
@H_404_5@解决办法如下:把要删除的数据查询出来做为一个第三方表,然后筛选删除。

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)
@H_404_5@更新也和上面操作原理相同。

@H_404_5@推荐学习:《mysql视频教程》

大佬总结

以上是大佬教程为你收集整理的讲解mysql如何删除重复数据全部内容,希望文章能够帮你解决讲解mysql如何删除重复数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: