update TABLE set A = (
SELECT
CASE
WHEN B - C >= A THEN A
WHEN B - C < A THEN B - C
END AS A
from
TABLE )
我得到的回复是:
子查询返回超过 1 个值。当子查询跟在 =、!=、<、<=、>、>= 后面或子查询用作表达式时,不允许这样做。
最佳答案
不,如果您的表有超过 1 条记录,则该方法不起作用。在这种情况下,我不确定您为什么使用子查询。我认为您正在寻找这样的东西:
UPDATE MyTable
SET A =
CASE
WHEN B - C >= A THEN A
ELSE B - C
END
此查询将更新表中每条记录的 A
列。如果B - C
大于或等于A
,则A
的值将保持不变。否则,A
将设置为 B - C
。我还会使用 ELSE
而不是两个 WHEN
。
关于sql-server - SQL 查询 - 我可以不这样做吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17662074/