错误#1242子查询返回多于1行

时间:2020-09-29 04:16:05

标签: mysql sql

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行被“股票”接受,因此它将从我的第一个表中减去值。

2 个答案:

答案 0 :(得分:1)

SET股票只能取一个值。您的子查询返回多个。确保它只能返回一个值。单独运行子查询以确认。

答案 1 :(得分:0)

您应该只将单个值分配给SET列。例如

SET a = 'test', b = 'something'

但是,如果您想更新多行,则需要INSERT IGNORE或使用特定值更新所有表行,那么您只需要编写适当的WHERE条件。 / p>

相关问题