更新每一行中的列

时间:2014-09-03 04:30:10

标签: sql oracle

我对ORACLE SQL有疑问。 我想要做的是根据行值

更新列中的值

所以,我的表是这样的,

NAME   VALUE1 VALUE2 VALUE3 SOURCEVAL RESULT
HEAD2       0      1      0       30       0
HEAD2       1      0      1       30       0
HEAD2       1      1      1       30       0

这是我的SQL

 update testa set result = (select (testa.value1*testa.sourceval)+(testa.value2*testa.sourceval)+(testa.value3*testa.sourceval) from testa)

基本上我想根据每行中的数据更新列结果。 我期望的结果将是

First HEAD2 Result = 30,
Second HEAD2 Result = 60,
Third HEAD2 Result = 90

请帮助我,我一直得到" ORA-01427:单行子查询返回多行"错误

1 个答案:

答案 0 :(得分:4)

试试这个:

update testa
set result = (value1*sourceval) + (value2*sourceval) + (value3*sourceval)

在这种情况下不需要子查询。您得到的错误是因为您的子查询返回的行多于一行。

或者,这也可以:

update testa
set result = (value1+value2+value3)*sourceval