聯合多表更新資料

2021-09-27 09:24:41 字數 689 閱讀 7466

正常思路:

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中支援此語法...