oracle關聯表更新

2021-10-23 10:52:00 字數 1089 閱讀 6509

如果有a表和b表,sql server中用:

update a set field2=b.filed2 from a,b where a.field1=b.field1搞定,所以用慣了sql server的更新表語句,再用oracle的那真是特別的拗口。

情景一:如果只是更新固定值,oracle和sql server相差不大:

update a set field2=『ok』

where exists(select 1 from b where a.field1=b.field1)

情景一:更新內容為關聯表中字段

oracle更新關聯表的語法有些臃腫。

update a set field2=(select b.field2 from b where a.field1=b.field1)

where exists(select 1 from b where a.field1=b.field1)

對於子查詢的值只能是乙個唯一值,不能是多值。

另外oracle也變通了方法,用檢視的方式簡化:

update(select a.field2 as afield2,b.field2 as bfiled2 from a,b where a.field1=b.field1)

set afield2=bfield2

情景三:更新內容為關聯表中多個字段

如果按情景二的語法,是多個字段更新豈不累死人:

update a set field3=(select b.field3,b.field4 from b where a.field1=b.field1),field4=(select b.field4,b.field4 from b where a.field1=b.field1)

where exists(select 1 from b where a.field1=b.field1)

還好有如下簡化語句:

update a set (field3,field4)=(select b.field3,b.field4 from b where a.field1=b.field1)

where exists(select 1 from b where a.field1=b.field1)

Oracle的關聯表更新(二)

oracle資料庫中有乙個表formtable main 159 dt1結構如下 mainid,id 161,100,161,101,161,102,162,103 162,104 163,105 現在增加乙個字段序號,實現如下的效果 mainid,id,xuhao 161,100,1 161,10...

oracle多表關聯更新

1.首先將其他表的資料抽取到一張臨時表裡面。create table temp dim2 as select t.stdaddr,s.dzbm from demp dim t,dzmlpxz pt s where t.sdaddr s.mc 2.進行分組查詢,看看裡面的記錄是否有重複的。select...

oracle多表關聯更新

oracle的更新語句不通mssql那麼簡單易寫,就算寫出來了,但執行時可能會報 這是由於set 的子查詢查出了多行資料值,oracle規定一對一更新資料,所以提示出錯。要解決這樣必須保證查出來的值一一對應。原理 update語句的原理是先根據where條件查到資料後,如果set中有子查詢,則執行子...