Mysql内部连接更新产品类别

Mysql内部连接更新产品类别,mysql,Mysql,我的MYSQL更新查询有问题。我有两个表:一个是命名产品,另一个是命名产品类别。例如: 表产品 productid weight 1. 0.00 2. 0.00 3. 0.00 表产品类别 productid categoryid 1. 77 1. 78 2. 86 2. 87 3.

我的MYSQL更新查询有问题。我有两个表:一个是命名产品,另一个是命名产品类别。例如:

表产品

productid weight
1.                0.00
2.                0.00
3.                0.00
表产品类别

productid categoryid
1.               77
1.               78
2.               86
2.               87
3.               40
我的想法是,我想根据某个产品所属的产品类别更新该产品的重量。以下查询适用于数量较少的父类别。但是,对于子类别,查询似乎会跳过它们。是否需要检查产品标识和类别标识的所有组合,以设置类别标识值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;

添加一个
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)

两幅图像是相同的。请以纯文本而不是图像的形式发布数据。表中的子类别在哪里?您需要在您的
案例中添加
ELSE
子句,否则所有其他产品的权重将设置为
NULL
。感谢您花时间作出反应。我认为图像会因为布局而更清晰。所有类别都用数字表示,例如77可以是主类别,78可以是子类别。使用代码格式可以整齐地显示文本表。无论如何,查询如何知道
77
是一个类别而
78
是一个子类别?这正是我要找的!非常感谢你。