一、问题描述
数据表如下图
上述是ecshop中的商品表(ecs_goods),远程采集数据时,由于采集代码写的不够严谨,导致sku_id,goods_sn,goods_name三个字段中的数据出现了大量重复。
二、数据处理过程中出现的错误
delete from ecs_goods WHERE sku_id IN (SELECT sku_id FROM ecs_goods GROUP BY sku_id HAVING COUNT(*)>1) AND goods_id NOT IN (SELECT MIN(goods_id) FROM ecs_goods GROUP BY sku_id HAVING COUNT(*)>1)
提示错误:
1 queries executed, 0 success, 1 errors, 0 warnings
查询:delete from ecs_goods WHERE sku_id IN (SELECT sku_id FROM ecs_goods GROUP BY sku_id HAVING COUNT(*)>1) AND goods_id NOT IN (SELE...
错误代码: 1093
Table 'ecs_goods' is specified twice, both as a target for 'DELETE' and as a separate source for data
执行耗时 : 0 sec
传送时间 : 0 sec
总耗时 : 0 sec
三、完美解决
正确语句:
DELETE from ecs_goods WHERE sku_id in (SELECT sku_id from (SELECT sku_id FROM ecs_goods GROUP BY sku_id HAVING COUNT(*)>1) s1) AND goods_id NOT in (SELECT goods_id from (SELECT goods_id FROM ecs_goods GROUP BY sku_id HAVING COUNT(*)>1) s2);
转载请注明:谷谷点程序 » sql语句删除mysql数据库单表中指定字段下的重复数据