a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

在Oracle數據庫中同時更新兩張表的簡單方法

2024-08-29 13:58:33
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了在Oracle數據庫中同時更新兩張表的簡單方法,同時介紹了一種差異性合并更新的方法,需要的朋友可以參考下

以前只會寫一些簡單的updaet語句,比如updae table set c1='XXX' 之類的

今天遇到一個數據訂正的問題,項目背景如下,有個表A,有兩個字段a1,a2還有一個關聯表B,其中也有兩個字段,b1和b2。其中a2和b2是關聯的,想把A中的字段a1更新成B中的b1

理論上sql應該挺好寫的,但是在oralce中實現了半天一直報語法錯誤。而且確實還有些小小細節沒有注意到。

首先上測試數據

表1,ZZ_TEST1

在Oracle數據庫中同時更新兩張表的簡單方法

表2,ZZ_TEST2

在Oracle數據庫中同時更新兩張表的簡單方法

要把表一的text更新成表二的text1值,對應的sql如下:

 

 
  1. update ZZ_TEST1 t1 set t1."text" = ( 
  2. select T2."text1" from ZZ_TEST2 t2 where T2."pid"=t1."id" 
  3. )  
  4. WHERE EXISTS 
  5. SELECT 1 FROM ZZ_TEST2 t2 where T2."pid"=t1."id" 

后面的where條件表示一個限制條件,只更新那些符合條件的數據,也可以寫成

 

 
  1. update ZZ_TEST1 t1 set t1."text" = ( 
  2. select T2."text1" from ZZ_TEST2 t2 where T2."pid"=t1."id" 
  3. where t1."id" in (select "pid" from ZZ_TEST2 ) 

另外還有一種merge的寫法,對應的sql如下:

 

 
  1. merge into ZZ_TEST1 t1 using ZZ_TEST2 t2 on (t1."id" =t2."pid")  
  2.  
  3. when matched then 
  4.  
  5. update set t1."text"=t2."text1" 

為了避免T2中有多條數據對應T1中的數據,可以把sql改成如下的方式:

 

 
  1. MERGE INTO ZZ_TEST1 t1 USING  
  2. (  
  3. SELECT * FROM ZZ_TEST2 X WHERE X. ROWID =  
  4. (SELECT MAX(Y.ROWID) FROM ZZ_TEST2 Y WHERE X."id" = Y."id" ) 
  5. )  
  6. t2  
  7. ON (t1."id" = t2."pid")  
  8. WHEN MATCHED THEN 
  9. UPDATE SET t1."text" = t2."text1" 

還有一種update from 的語法,經過測試在oracle和mysql中不適用

總結一下,項目中嘗嘗需要把一張表的字段更新到另一張表中的某一個字段??梢允褂胾pdate語法,并要做好限定。會使用merge的語法,另外還有一種merge的語法也可以,update from 不能再oracle和mysql中使用。


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中文字幕av一区 | 日韩免费观看 | 精品www | 亚洲福利视频在线 | 欧美日韩首页 | 成人国产精品久久 | 国产精品一区免费在线观看 | 免费国产视频 | 仙人掌旅馆在线观看 | 国产一区二区视频在线观看 | 日韩影音| 免费高清av| 在线观看a视频 | 久久艹视频 | 久久国产精彩视频 | 国产精品一区一区 | 超碰日本| 一本色道亚洲精品aⅴ | 男人天堂中文字幕 | 国产羞羞视频 | 久久久久久久久久久久久久久 | 色玖玖综合| 久久一级 | 日韩一区二区在线播放 | 欧美性猛交一区二区三区精品 | 欧美精品在线视频 | 国产在线中文字幕 | 中文字幕不卡在线 | 欧美精品久久 | 免费黄色福利视频 | 国产综合视频在线观看 | 精品久久久久久久人人人人传媒 | 欧美日一区二区 | 精品九九久久 | 黄色成人av| 午夜精品久久久久久久久久久久 | 日日摸天天爽天天爽视频 | 久久伊人免费视频 | 青草精品| 欧美一区二区三区视频在线观看 | 国产欧美一区二区三区国产幕精品 |