我有3個表,我需要通過計算其他兩個表中的數據來更新第3個表的列。多個ID的更新聲明
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值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。 該聲明已被終止。
&我知道這是因爲子查詢返回超過1行,我該如何處理這種情況?任何暗示/想法都會有所幫助。
如何更新多個ID?即。由ID 100返回的選擇查詢值應該更新爲ID 100的第三個表&類似的ID 101.
此外,我需要做這樣的總和(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);
你是對的,我不需要內在的身份證條件。 – Sharpeye500