簡體   English   中英

SQL:從另一個表中減去一個表中的值

[英]SQL: subtracting value in a table from another table

第一次在這里提問。 我試圖用 EXPOS.INV 中的數量減去表SS_Products中的EXPOS.INV 這是我嘗試過的代碼:

UPDATE SS_products SS 
SET SS.nb_stock = (SELECT SS.nb_stock - EX.Qty 
                   FROM EXPOS_INV EX
                   WHERE  SS.product_code = EX.Barcode)

該代碼有效,它更新了兩個表之間行匹配的nb_stock ,但它在每隔一行都將其置空。

我嘗試添加一個內部聯接:

UPDATE SS_products SS 
SET SS.nb_stock = (SELECT SS.nb_stock - EX.Qty 
                   FROM EXPOS_INV EX
                   WHERE SS.product_code = EX.Barcode)
INNER JOIN EXPOS_INV ON SS_products.product_code = EXPOS_INV.Barcode

這個沒有 go 通過。 我也嘗試了WHERE但它不使用EXPOS_INV中的任何子句

在回答之后,我嘗試了Where Exists ,但它返回了一堆不相關行的截斷消息。

我關注了一個基本示例的評論,我想出了這段代碼

UPDATE 
    SS_products
SET 
    SS_products.nb_stock = (Select SS.nb_stock - EX.Qty from EXPOS_INV EX
                   Where SS.product_code = EX.Barcode)
FROM 
    SS_products
    INNER JOIN EXPOS_INV ON SS_products.product_code = EXPOS_INV.Barcode
Where
    SS_products.product_code = EXPOS_INV.Barcode

這會返回語法錯誤。

如果匹配的行存在,您可以使用where檢查:

UPDATE SS_products SS 
    SET SS.nb_stock = (Select SS.nb_stock - EX.Qty
                       from EXPOS_INV EX
                       Where SS.product_code = EX.Barcode
                      )
    WHERE EXISTS (Select SS.nb_stock - EX.Qty
                  from EXPOS_INV EX
                  Where SS.product_code = EX.Barcode
                 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM