讲解mysql如何删除重复数据

讲解mysql如何删除重复数据,第1张

概述讲解mysql如何删除重复数据 本篇文章给大家介绍MysqL怎么删除重复数据。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

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

字段说明
ID自增
sku_IDsku_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如何删除重复数据全部内容,希望文章能够帮你解决讲解mysql如何删除重复数据所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1149881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存