mysql怎么删除重复数据

85次阅读
没有评论

共计 1329 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章主要讲解了“mysql 怎么删除重复数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“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 怎么删除重复数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计1329字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)