UPDATE tbl_products
SET Stocks = (Select Stocks
WHERE Product_ID IN (3,4,6)) - (SELECT Quantity
FROM tbl_transactions
WHERE Product_ID IN (3,4,6)
AND Date_Time BETWEEN '2020-09-20' AND '2020-09-22');
#1242-子查询返回多于1行
我的问题是,如何使“股票”接受多行,甚至有可能?除此之外,还有其他解决方案吗?我已经运行了子查询,它返回了3行,并且我需要3行被“股票”接受,因此它将从我的第一个表中减去值。
答案 0 :(得分:1)
SET股票只能取一个值。您的子查询返回多个。确保它只能返回一个值。单独运行子查询以确认。
答案 1 :(得分:0)
您应该只将单个值分配给SET
列。例如
SET a = 'test', b = 'something'
但是,如果您想更新多行,则需要INSERT IGNORE
或使用特定值更新所有表行,那么您只需要编写适当的WHERE
条件。 / p>