如果有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中有子查詢,則執行子...