Sql server 多行表之间的计算

Sql server 多行表之间的计算,sql-server,Sql Server,我遇到了在多行表之间进行计算的问题 这是我的代码: UPDATE StockList SET stkQuantity = stkQuantity - (SELECT quantity FROM mCalculate) WHERE stkID = (SELECT stkID FROM mCalculate) 如果表mCalculate只有一行数据,则StockList中的计算成功,但如果表mCalculate有多行数据,则我得到一个错误: 子查询返回了多个值。当子查询在=、!=、=或者当子查

我遇到了在多行表之间进行计算的问题

这是我的代码:

UPDATE StockList 
SET stkQuantity = stkQuantity - (SELECT quantity FROM mCalculate) 
WHERE stkID = (SELECT stkID FROM mCalculate)
如果表
mCalculate
只有一行数据,则
StockList
中的计算成功,但如果表
mCalculate
有多行数据,则我得到一个错误:

子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时

有谁能帮我解决这个问题,并向我解释我遇到的问题是什么?
要参考的图像:
窗口: 数据库:

除其他问题外,这里的这一行:

 WHERE stkID = (SELECT stkID FROM mCalculate)
=
需要一个值,因此除非您的
mCalculate
表只有一行,否则将出现错误

您的错误:
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。
很可能是由于WHERE子句。

您的子查询选择

(SELECT quantity FROM mCalculate)
需要确保此select只返回一行的WHERE子句。同上:

(SELECT stkID FROM mCalculate)

如果没有这些表的模式定义,很难帮助您准确地确定WHERE子句应该是什么。

在这种情况下,您必须使用join而不是sub query

UPDATE S
SET stkQuantity = stkQuantity - M.quantity
From stocklist s 
Join mcalculate m
On  s.stkid = m.stkid 

您的子查询需要一个
WHERE
子句。。。不是吗?嗯。。。也许我的大脑无法理解先生想说什么。先生能再解释一下吗?谢谢。也许你应该解释一下你想做什么。你的查询毫无意义。你是在计算McCalculate中所有行的总和吗?非常感谢你的帮助。它起作用了,我学到了一个新东西:)