Mysql INNER JOIN更新产品类别

时间:2018-02-05 22:09:11

标签: mysql

我的MYSQL更新查询出了问题。我有两个表:一个名为product的产品,另一个名为product_category。例如:

Tableproduct

productid weight
1.                0.00
2.                0.00
3.                0.00

Tableproduct_category

productid categoryid
1.               77
1.               78
2.               86
2.               87
3.               40

我的想法是,我想根据其所属的产品类别更新某个产品的重量。以下查询适用于父类别,它们的编号较小。但是对于子类别,查询似乎跳过它们。有没有检查product_id和category_id的所有组合来设置category_id值78和87的权重?提前谢谢!

到目前为止我的查询:

UPDATE product
INNER JOIN product_to_category 
ON product.product_id=product_to_category.product_id 
Set weight = case 
           when product_to_category.category_id = '78' then '99.00000000'
           when product_to_category.category_id = '87' then '99.00000000'
end;

1 个答案:

答案 0 :(得分:0)

添加WHERE子句,将匹配限制在您关注的案例中。

UPDATE product AS p
INNER JOIN product_to_category AS pc ON p.product_id = pc.product_id
SET weight = case pc.category_id
        when 78 then '99.00000000'
        when 87 then '99.00000000'
end
WHERE pc.category_id IN (78, 87)