更新多个(多个)行

时间:2016-08-06 01:30:15

标签: sql sql-server

我在更新方面遇到了一些问题。当我在数据库中获得一条记录时,它可以正常工作,但是当我得到的记录超过1时,它就无法正常工作。

这是代码:

UPDATE rozl 
SET amountAfter = (SELECT amountBefore - (amount + destroyed) FROM rozl)

表格如

  id    number   amountBefore    amount    destroyed    amountAfter
   1         3            100        30           20             50
   2         4            50         10           3             NULL

当我运行更新时,我希望amountAfter能够获得价值。

我得到的错误:

  

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

然后我从更新运行此Select,我得到2行是正确的,但我无法更新。

select的输出是:

   1   50
   2   37

正如我所说,这是正确的,但我不知道如何在更新中写它。

1 个答案:

答案 0 :(得分:5)

您不需要子查询:

update rozl
set amountAfter= amountBefore - (amount + destroyed)

如评论所述,您确实需要括号作为操作顺序。