我想在MySQL中将上述查询转换为单个查询:
UPDATE ps_stock_available
SET `quantity` = 0
WHERE id_product IN (SELECT id_product
FROM ps_product_shop
WHERE `date_upd` < Now() - INTERVAL 48 hour);
UPDATE ps_product_lang
SET `available_later` =
'Sobre Pedido: Entrega de 4 a 6 semanas --Sujeto a disponibilidad--'
WHERE id_product IN (SELECT id_product
FROM ps_product_shop
WHERE `date_upd` < Now() - INTERVAL 48 hour);
UPDATE ps_warehouse_product_location
SET `id_warehouse` = 3
WHERE id_product IN (SELECT id_product
FROM ps_product_shop
WHERE `date_upd` < Now() - INTERVAL 48 hour);
UPDATE ps_stock_available
SET `out_of_stock` = 2
WHERE id_product IN (SELECT id_product
FROM ps_product_shop
WHERE `date_upd` < Now() - INTERVAL 48 hour);
在一个有效的查询中执行这4个更新的有效方法是什么?
答案 0 :(得分:0)
因为您正在更新不同的表,所以我认为没有办法通过单个查询来实现。
如果您要更新单个表,则可以将要插入的所有值捆绑到单个查询中。
通过将id_product
数组保存为id_products
,然后使用该数组运行4个查询,可以避免同时执行相同的子查询4次。