【发布时间】:2013-08-08 14:21:30
【问题描述】:
为了解释这个问题,我在下面概述了一个示例情况。
OrderRows
ID|OrderNumber|ProductNumber|Quantity|Done
1 |10 |100 |1 |no*
2 |10 |101 |1 |no
3 |10 |100 |4 |no*
*具有相同的产品编号
Stock
ProductNumber|Quantity
100 |5
101 |1
UPDATE OrderRows
INNER JOIN Stock ON Stock.ProductNumber=OrderRows.ProductNumber
SET Done='yes'
,Stock. Quantity = Stock. Quantity -OrderRows. Quantity
WHERE OrderNumber='100' AND Done='no'
Stock 表的结果如下。
ProductNumber|Quantity
100 |4
101 |0
订单行已正确更新。但是对于第三行,Stock 没有被调整。这是因为第三行订单的产品编号与第一行订单相同。问题是,我该如何解决这个问题?
【问题讨论】:
-
正确更新后两个表的期望输出是什么?
-
@hims056 ` ID|OrderNumber|ProductNumber|Quantity|Done 1 |10 |100 |1 |yes 2 |10 |101 |1 |yes 3 |10 |100 |4 |yes' 产品编号|数量 100 |0 101 |0
-
@hims056 对于所有 OrderRows Done 必须为“是”并且产品编号 100 的库存应为 0
-
我明白了。看我的回答。
标签: mysql sql join sql-update