Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在多个表上的一个mysql查询中更新多个列?_Mysql_Sql_Sql Update - Fatal编程技术网

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

如何在多个表上的一个mysql查询中更新多个列?,mysql,sql,sql-update,Mysql,Sql,Sql Update,我必须更新表inventory\u tbl中的行,该表包含所有尺寸的总库存,表product\u tbl中包含每行的总库存。 我希望尽可能使用一条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

我必须更新表
inventory\u tbl
中的行,该表包含所有尺寸的总库存,表
product\u tbl
中包含每行的总库存。 我希望尽可能使用一条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);
更新:我忘了说如果记录存在于
订单\u tbl
。如果订单中有行,则更新库存行和产品行。Gomene.

您可以在下面使用update join进行尝试

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

您可以在下面使用update join进行尝试

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

OP中没有名为
I
的表。是@TimBiegeleisen,那将是库存,我错了,谢谢u@fa06天啊。非常感谢你,我忍不住要麻烦你。SPAAAccess LMAO OP中没有名为
I
的表。是的@TimBiegeleisen,那将是库存,我错了,谢谢u@fa06天啊。非常感谢你,我忍不住要麻烦你。SPAAAccessLMAO