mysql - 只有一个条件的一个查询中对多个表的多次更新

标签 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 次更新的正确方法是什么?

最佳答案

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

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

为了节省时间,您可以通过将 id_product 数组保存为 id_products 然后使用该数组运行 4 次查询来避免执行 4 次相同的子查询.

关于mysql - 只有一个条件的一个查询中对多个表的多次更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47164413/

相关文章:

mysql - SQL/MySQL : Sum all amounts for respective month

mysql - 带外键的 SQL 条件

mysql - 优化 MySQL NOT IN Query

php - 将 SAP 与 PHP 后端集成

mysql - 为 2 个表 mysql 之间的每组匹配选择最小匹配

java - 我正在创建一个简单的 JDBC Java 应用程序,获取类未找到异常

mysql - Django 数据库关系

mysql - 无法从 jsf Web 应用程序将数据添加到 mysql 数据库

尽管使用 mysql_real_escape_string,但 PHP MySQL 查询字符串问题

php - 带密码的登录表单