2016-11-08 86 views
0

您好,我有一個購物車,它有幾個項目,我試圖更新庫存,以便當買家檢出時更新庫存中的所有項目。從庫存中減去所有精裝書,平裝書和電子書,這取決於購買量..我知道如何使它工作,當我只需要更新一條記錄時,問題是如何更新多行... 這是我目前的SQL。 。如何使用一個查詢更新mysql中的多行

UPDATE inventory INNER JOIN cart ON inventory.isbn = cart.isbn 
SET inventory.num_hardcover = inventory.num_hardcover - cart.hardcover_purchased 
WHERE inventory.isbn=cart.isbn 
+0

類似的問題是:已被問及,在這裏檢查http://stackoverflow.com/questions/20255138/sql-update-multiple-records-in-one-query –

+0

這個查詢工作在所有?我的第一個想法是更新基於子查詢的值,即'更新清單我SET num_hardcover = num_hardcover - (SELECT sum(hardcover_purchased)FROM cart c WHERE c.isbn = i.isbm)'我不在我的數據庫服務器,我可能會稍後再測試。 –

+0

@ Bill Karwin ...謝謝 –

回答

0

終於找到它oout

UPDATE inventory 
INNER JOIN cart ON inventory.isbn=cart.isbn 
SET inventory.num_hardcover =inventory.num_hardcover-cart.hardcover_purchased, 
    inventory.num_softcover=inventory.num_softcover-cart.softcover_purchased 
WHERE inventory.isbn=cart.isbn 
+0

您不需要'WHERE'子句,因爲它與ON子句相同。 – Barmar

+1

我沒有看到此查詢與問題中的原始問題之間的區別。他們都更新所有匹配'JOIN'條件的行。唯一的區別是這個更新多列,但你的問題是關於更新多行。你對行和列之間的區別感到困惑嗎? – Barmar

+0

@Barmar是啊我不知道如何去編輯多行......但我明白了......謝謝 –