Prestashop 1.7多店铺批量更新商品价格MySQL语句求助
批量更新ps_product_shop表指定商品和店铺的价格
根据你的需求,要批量将指定商品在目标店铺的价格更新为同商品在源店铺价格的25倍,这里提供两种可靠的批量更新方案:
方案1:批量更新所有商品的目标店铺价格
如果需要一次性更新所有商品在店铺ID为3的价格(以店铺ID为1的对应商品价格为基准乘以25),可以使用UPDATE JOIN语句,这比多条单条更新语句效率更高:
UPDATE ps_product_shop target JOIN ps_product_shop source ON target.id_product = source.id_product AND source.id_shop = 1 SET target.price = source.price * 25 WHERE target.id_shop = 3;
语句说明:
target别名代表需要更新的目标记录(店铺3的行)source别名代表价格来源的记录(店铺1的对应商品行)- 通过
id_product关联两张表,确保更新的是同一商品的价格 WHERE子句限定只更新店铺3的记录
方案2:批量更新指定商品的目标店铺价格
如果只需要更新特定商品ID(比如商品1和2)的店铺3价格,可以在语句中添加id_product的过滤条件:
UPDATE ps_product_shop target JOIN ps_product_shop source ON target.id_product = source.id_product AND source.id_shop = 1 SET target.price = source.price * 25 WHERE target.id_shop = 3 AND target.id_product IN (1, 2);
验证结果
执行上述语句后,你的表数据会符合预期:
- 商品1在店铺3的价格保持25(1*25)
- 商品2在店铺3的价格保持50(2*25)
为什么单条语句转批量容易失效?
如果尝试用子查询批量更新,可能会因为子查询返回多行结果导致语法错误,而UPDATE JOIN的方式通过关联表的方式,能安全且高效地完成批量更新操作。
内容的提问来源于stack exchange,提问作者Mailo
相关产品推荐
相关产品推荐

