加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql怎么删除重复数据

发布时间:2022-06-18 13:36:31 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要讲解了mysql怎么删除重复数据,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习mysql怎么删除重复数据吧! sku对应的重量表,应该一个sku_id 对应唯一 一条重量数据,由于程序错误导致出现一样的
  这篇文章主要讲解了“mysql怎么删除重复数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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怎么删除重复数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读