我有一个eshop数据库,我已经复制了一些产品以便将它们移动到不同的类别(批发/零售)。我需要更新,在它的名字有“[CLONE]”每种产品的CATEGORY_ID,这就是即时通讯做:使用2个连接的更新表
首先,我检查有多少产品需要移动:
select p.product_id, pd.product, pc.category_id
from cscart_products p
join `cscart_product_descriptions` pd on p.product_id = pd.product_id
join `cscart_products_categories` pc on p.product_id = pc.product_id
where pd.product like '%CLONE%'
and pc.category_id = '17'; -- 17 is the current category_id
取出16行;
然后,我执行更新:
UPDATE cscart_products_categories pc
join `cscart_product_descriptions` pd on pc.product_id = pd.product_id
join `cscart_products` p on pc.product_id = p.product_id
SET pc.category_id = '30' -- the category to be moved to
WHERE pc.category_id = '17'
AND pd.product like '%[CLONE]%';
9行受到影响;如你所见,16个中只有9个正在更新,显然在我的更新语句中有什么错误,但是什么?样本数据可以在这里找到http://www.megaupload.com/?d=AM85UQFY
我已经更新了原来的职位,因为我曾误把值更新查询顺序错误。 – bikey77
这7个不反应可能已经是30的价值,因此不受影响? –