mysql查询数据的同时对它进行删除操作

2018-06-04 10:06:43

今天遇见一个问题,需要把mysql数据库里面的 商品主表 和它的每一个条目对应不上的数据给全部删除(数据如下图);也就是整理一下数据库里的数据保证数据的可用;

但是出现了问题; 我是先查出来productId 然后判断主表里的哪些productId不在这些productId里面直接删除,之前是这个样子写的

delete from wy_product_v1 where productId not in(select wy_product_v1.productId from wy_product_v1,wy_product_item where wy_product_v1.productId=wy_product_item.productId);

报错

MySQL中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。

但是改成下面写法就可以了:

delete from wy_product_v1 where productId not in(

select w.productId from(

select wy_product_v1.productId from wy_product_v1,wy_product_item where wy_product_v1.productId=wy_product_item.productId

) w

);