最新消息: 新版网站上线了!!!

sql语句删除mysql数据库单表中指定字段下的重复数据

一、问题描述

数据表如下图

y097ovnf{]bc.png

图片2.png

        上述是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数据库单表中指定字段下的重复数据