MySQL更新关联指定分类的商品表mpn字段语句求助
正确的UPDATE语句解决方案
嘿,我看你这两条SQL没生效的核心问题出在关联条件写错了!咱们先理清楚两张表的关联逻辑:oclh_product(商品表)和oclh_product_to_category(商品分类关联表)是通过共同的product_id字段来关联的,而不是用category_id去关联product_id,这就是你语句失效的关键原因。
正确的JOIN写法(推荐)
这是最直观的多表更新写法,通过product_id关联两张表,再过滤目标分类ID:
UPDATE `oclh_product` INNER JOIN `oclh_product_to_category` ON oclh_product.product_id = oclh_product_to_category.product_id SET oclh_product.mpn = '99999' WHERE oclh_product_to_category.category_id = 26;
子查询写法(备选)
如果你更习惯用子查询的方式,也可以先从关联表中筛选出目标分类对应的商品ID,再更新商品表:
UPDATE `oclh_product` SET mpn = '99999' WHERE product_id IN ( SELECT product_id FROM `oclh_product_to_category` WHERE category_id = 26 );
你原来语句的错误点
- 第一条语句的关联条件写成了
oclh_product_to_category.category_id = oclh_product.product_id,这相当于把分类ID和商品ID强行关联,逻辑完全错误,自然找不到匹配的记录; - 第二条语句的JOIN条件直接写了
ON oclh_product_to_category.category_id = '26',这根本不是两张表的关联规则,相当于没有把商品表和关联表正确绑定,所以也无法定位到要更新的商品。
内容的提问来源于stack exchange,提问作者Ivan Dimov
相关产品推荐
相关产品推荐

