Oracle中update和select 關(guān)聯(lián)操作
1、介紹
本文主要向大家介紹了Oracle數(shù)據(jù)庫之oracle update set select from 關(guān)聯(lián)更新,通過具體的內(nèi)容向大家展現(xiàn),希望對大家學(xué)習(xí)Oracle數(shù)據(jù)庫有所幫助。
工作中有個需求,現(xiàn)在新表中有一些數(shù)據(jù)跟老表的基本一樣,這樣只需要把老表中數(shù)據(jù)搬到新表中就可以了,同時把不同的字段修改下數(shù)據(jù)即可,在修改字段時發(fā)現(xiàn),需要指定一個條件,比如主鍵id,來修改某條記錄,這樣一條一條修改效率太低了,有沒有批量操作的方式呢?
goods表:
select gid,code,name,code2 from goods;

init_goods表:
select code,name,code2 from init_goods;

2、解決方法
2.1、需求
goods表中code2根據(jù)init_goods表中code2更新;
2.2、錯誤演示
下面是一個錯誤的做法:
update goods set code2 = (select code2 from init_goods where init_goods.code = goods.code)
goods表數(shù)據(jù)無法更新,系統(tǒng)會一直卡主,知道崩潰;
2.3、解決方法
方法一:
update goods set code2 = (select code2 from init_goods where init_goods.code = goods.code) where exists (select 1 from init_goods where init_goods.code = goods.code)
方法二:
update goods goods set goods.code2 = (select init_goods.code2 from init_goods where init_goods.code = goods.code) where goods.code = (select init_goods.code from init_goods where init_goods.code = goods.code)
注意:修改的列是code2,條件是 code ;
說明:
如果select 子句可以返回多行記錄,但返回適合where條件的記錄是唯一的,否則將會報返回單行的select子句返回多行的錯誤,因為 update只能跟據(jù)此處的where子句(內(nèi)層where)進(jìn)行相應(yīng)記錄的匹配更新,一次只能是一條。
到此這篇關(guān)于Oracle update和select 關(guān)聯(lián)的文章就介紹到這了,更多相關(guān)Oracle update和select 關(guān)聯(lián)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle 函數(shù)判斷字符串是否包含圖片格式的實例代碼
本文通過實例代碼給大家介紹了oracle 函數(shù)判斷字符串是否包含圖片格式的相關(guān)資料,需要的朋友可以參考下2017-07-07
Oracle服務(wù)器結(jié)構(gòu)詳解(最新推薦)
這篇文章主要介紹了Oracle服務(wù)器結(jié)構(gòu)的相關(guān)知識,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06
PL/SQL登錄Oracle數(shù)據(jù)庫報錯ORA-12154:TNS:無法解析指定的連接標(biāo)識符已解決(本地未安裝Oracle
這篇文章主要介紹了PL/SQL登錄Oracle數(shù)據(jù)庫報錯ORA-12154:TNS:無法解析指定的連接標(biāo)識符已解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

