我在更新方面遇到了一些问题。当我在数据库中获得一条记录时,它可以正常工作,但是当我得到的记录超过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
正如我所说,这是正确的,但我不知道如何在更新中写它。
答案 0 :(得分:5)
您不需要子查询:
update rozl
set amountAfter= amountBefore - (amount + destroyed)
如评论所述,您确实需要括号作为操作顺序。