mysql怎么删除重复数据
这篇文章主要讲解了“mysql怎么删除重复数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql怎么删除重复数据”吧!
sku对应的重量表,应该一个sku_id 对应唯一 一条重量数据,由于程序错误导致出现一样的冗余数据。只保留一条,其他的删除。
假设表名:weight
查询有重复数据的列表
SELECTsku_id,COUNT(id)FROMweightGROUPBYsku_idHAVINGCOUNT(sku_id)>1
查询重复数据里面每个最小的id
SELECTmin(id)FROMweightGROUPBYsku_idHAVINGCOUNT(sku_id)>1
查询去掉重复数据最小id的其他数据
SELECTid,sku_idFROMweightWHEREsku_idIN(SELECTsku_idFROMweightGROUPBYsku_idHAVINGCOUNT(sku_id)>1)ANDidNOTIN(SELECTMIN(id)FROMweightGROUPBYsku_idHAVINGCOUNT(sku_id)>1)
删除去掉重复数据最小id的其他数据
DELETEFROMweightWHEREsku_idIN(SELECTsku_idFROMweightGROUPBYsku_idHAVINGCOUNT(sku_id)>1)ANDidNOTIN(SELECTMIN(id)FROMweightGROUPBYsku_idHAVINGCOUNT(sku_id)>1)
原因是:删除这个表的同时又查询了这个表,查询这个表的同时又去删除了这个表,可以理解为死锁。mysql不支持这种删除查询同一张表的操作
错误代码:1093Youcan'tspecifytargettable'weight'forupdateinFROMclause
解决办法如下:把要删除的数据查询出来做为一个第三方表,然后筛选删除。
DELETEFROM`weight`WHEREsku_idIN(SELECTsku_idFROM(SELECTsku_idFROM`weight`GROUPBYsku_idHAVINGCOUNT(sku_id)>1)table1)ANDidNOTIN(SELECTidFROM(SELECTMIN(id)ASidFROM`weight`GROUPBYsku_idHAVINGCOUNT(sku_id)>1)table2)
更新也和上面操作原理相同。
感谢各位的阅读,以上就是“mysql怎么删除重复数据”的内容了,经过本文的学习后,相信大家对mysql怎么删除重复数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。