2016-11-08 43 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是啊我不知道如何去编辑多行......但我明白了......谢谢 –

相关问题