我有3个表,我需要通过计算从其他两个表中的数据来更新第三个表的列。
update table3 set column3=
(
select t2.column3+t1.column3
from table2 t2 with (nolock) join table1 t1
on table2.id=t1.id
where table2.id= 100
)
where id= 100;
此查询工作正常,它更新第三表列,但是如果我供应,这样的运营商:
update table3 set column3=
(
select t2.column3+t1.column3
from table2 t2 with (nolock) join table1 t1
on table2.id=t1.id
where table2.id IN (100,101)
)
where id IN (100,101);
这种失败,我得到这个消息
子查询返回多个值。 这是当子查询如下=,!=,<,<=,>,> =,或当子查询用作表达不允许的。 该语句已终止。
&我知道这是因为子查询返回多于1行,我怎么能处理这种情况? 任何提示/想法会有所帮助。
我如何更新多个ID? 即。 通过ID 100返回的选择查询值应针对在第三表&类似地对于ID 101 ID 100被更新。
另外,我需要做一笔这样的总和(t2.column3) - (t1.column3 + t1.column2)
update table3 set column3=
(
select sum(t2.column3)- (t1.column3 + t1.column2)
from table2 t2 with (nolock) join table1 t1
on table2.id=t1.id
where table2.id IN (100,101)
)
where id IN (100,101);