我想将上面的这些查询转换为 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 次更新的正确方法是什么?
最佳答案
因为您正在更新不同的表,所以我认为没有办法通过单个查询来完成。
如果您正在更新单个表,您可以将要插入的所有值捆绑到一个查询中。
为了节省时间,您可以通过将 id_product
数组保存为 id_products
然后使用该数组运行 4 次查询来避免执行 4 次相同的子查询.
关于mysql - 只有一个条件的一个查询中对多个表的多次更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47164413/