正常思路:
update t1 set t2.a=
(select t2.a from t2
where t1.b=t2.b)
但是這樣執行之後會報錯:
ora-01427: single-row subquery returns more than one row就是返回的值太多了,可能其中會包含一些重複行的值。
這個時候需要增加乙個附加條件:
rownum<2
即:update t1 set t2.a=
(select t2.a from t2
where t1.b=t2.b andrownum<2))
如果說t1的a列中的值全都包含在t2的b列,那麼以上語句即可適用,但是如果t1中的b列還包括其他不屬於t2的b列的值,那麼還需要多加乙個where子句,即:
update t1 set t2.a=
(select t2.a from t2
where t1.b=t2.b and rownum<2)
where exist
(select 1 from t2
where t1.b=t2.b and rownum<2)
這個子句能夠保證只修改t2中存在的對應a值。
Oracle多表聯合更新
以下是在後台更新易拓erp資料庫時遇到的乙個問題 1.在db14資料庫中將料件號p44開頭,並且品名為 塑膠袋 的料件改為消耗性料件.這個簡單 update db14.ima file set ima70 y where ima01 like p44 and ima02 塑膠袋 2.在以b021開頭...
T SQL 之 多表聯合更新
1 sqlite 多表更新方法 update ta set col1 tb.col1 from tablea ta inner join tableb tb on ta.col2 tb.col2 這是乙個非常簡單的批量更新語句 在sqlserver中支援此語法 sqlite中卻不支援,sqlite中...
SQL Update多表聯合更新的方法
sql update多表聯合更新的方法 1 sqlite 多表更新方法 update t1 set col1 t2.col1 from table1 t1 inner join table2 t2 on t1.col2 t2.col2 這是乙個非常簡單的批量更新語句 在sqlserver中支援此語法...