如何在多个表的一个mysql查询中更新多列?

时间:2018-10-29 04:39:24

标签: mysql sql sql-update

我必须更新表inventory_tbl中的行,该表包含所有大小的total_stocks,表product_tbl中包含每行的total_stocks。 我希望尽可能用一个UPDATE查询语句来完成它。 这就是我的想法:

UPDATE (SELECT I.product_no, O.product_sku, I.available_stock AS IA, I.reserved_stock AS IR, P.available_stock AS PA, P.reserved_stock AS PR
       FROM order_tbl O JOIN product_tbl P ON O.product_sku = P.product_sku
       JOIN inventory_tbl I ON P.product_no = I.product_no
       WHERE transaction_no = 2) AS stocks
SET stocks.IA = (stocks.IA - 1),
       stocks.IR = (stocks.IR + 1),
       stocks.PA = (stocks.PA - 1),
       stocks.PR = (stocks.PR + 1);

更新:我忘了说它是基于记录是否存在于 order_tbl。如果order_tbl中有一行,则更新stock_tbl行和product_tbl行。 Gomene。

1 个答案:

答案 0 :(得分:2)

您可以在下面使用更新联接尝试

UPDATE inventory_tbl I
INNER JOIN product_tbl P ON P.product_no = I.product_no
INNER JOIN order_tbl O ON O.product_sku = P.product_sku

Set 
   I.available_stock = I.available_stock - 1,
   I.reserved_stock = I.reserved_stock - 1,
   P.available_stock = P.available_stock - 1,
   P.reserved_stock = P.reserved_stock - 1
WHERE transaction_no = 2