仅使用一个条件在一个查询中对多个表进行多次更新

时间:2017-11-07 17:51:54

标签: mysql

我想在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个更新的有效方法是什么?

1 个答案:

答案 0 :(得分:0)

因为您正在更新不同的表,所以我认为没有办法通过单个查询来实现。

如果您要更新单个表,则可以将要插入的所有值捆绑到单个查询中。

通过将id_product数组保存为id_products,然后使用该数组运行4个查询,可以避免同时执行相同的子查询4次。