本文介紹如何刪除商品表中的一些重復記錄。
有時,一條商品由於有多個skuid,比如某種手機有不同顏色,但價格、優惠等信息卻是一致,導致其被多次收錄。由於其各種條件基本類似,這樣它在商品中多個sku都排一起。一方面影響占用了表的空間,另一方面給客戶的效果也不美觀。這里需要刪除這些重復記錄。
一、設定唯一標識
通過截取商品前面指定長度的字符,來給商品設定唯一標記。
SQL腳本如下
UPDATE `yhq_jdunion_goods3` SET `unionid` = LEFT(`goodsname`, 18);
二、搜索重復數據
搜索一下重復記錄有多少條。SQL腳本如下
select `unionid`,count(*) as count from `yhq_jdunion_goods3` group by `unionid` having count>1
搜索后可以看到有很多重復商品
三、刪除多余記錄
SQL腳本如下
delete from `yhq_jdunion_goods3` where id not in( select id from (select max(id) as id,count(`unionid`) as count from `yhq_jdunion_goods3` group by `unionid` having count =1 order by count desc) as tab) AND id not in( select id from (select max(id) as id,count(`unionid`) as count from `yhq_jdunion_goods3` group by `unionid` having count >1 order by count desc) as tab)
最后,再用搜索重復記錄的腳本搜索驗證一下,發現沒有重復的了。