Oracle中update和select 關(guān)聯(lián)操作
1、介紹
本文主要向大家介紹了Oracle數(shù)據(jù)庫(kù)之oracle update set select from 關(guān)聯(lián)更新,通過(guò)具體的內(nèi)容向大家展現(xiàn),希望對(duì)大家學(xué)習(xí)Oracle數(shù)據(jù)庫(kù)有所幫助。
工作中有個(gè)需求,現(xiàn)在新表中有一些數(shù)據(jù)跟老表的基本一樣,這樣只需要把老表中數(shù)據(jù)搬到新表中就可以了,同時(shí)把不同的字段修改下數(shù)據(jù)即可,在修改字段時(shí)發(fā)現(xiàn),需要指定一個(gè)條件,比如主鍵id,來(lái)修改某條記錄,這樣一條一條修改效率太低了,有沒(méi)有批量操作的方式呢?
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、錯(cuò)誤演示
下面是一個(gè)錯(cuò)誤的做法:
update goods set code2 = (select code2 from init_goods where init_goods.code = goods.code)
goods表數(shù)據(jù)無(wú)法更新,系統(tǒng)會(huì)一直卡主,知道崩潰;
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 ;
說(shuō)明:
如果select 子句可以返回多行記錄,但返回適合where條件的記錄是唯一的,否則將會(huì)報(bào)返回單行的select子句返回多行的錯(cuò)誤,因?yàn)?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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle 函數(shù)判斷字符串是否包含圖片格式的實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了oracle 函數(shù)判斷字符串是否包含圖片格式的相關(guān)資料,需要的朋友可以參考下2017-07-07
[Oracle] 淺析令人抓狂的ORA-01555問(wèn)題
首先要說(shuō)明的一點(diǎn)是:ORA-01555錯(cuò)誤是一個(gè)“安全”的錯(cuò)誤,它不會(huì)造成數(shù)據(jù)丟失或損壞,只是會(huì)讓接收到該錯(cuò)誤的查詢無(wú)法繼續(xù)。以下就是對(duì)發(fā)生ORA-01555錯(cuò)誤的原因進(jìn)行了介紹,需要的朋友可以參考下2013-07-07
Oracle服務(wù)器結(jié)構(gòu)詳解(最新推薦)
這篇文章主要介紹了Oracle服務(wù)器結(jié)構(gòu)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06
PL/SQL登錄Oracle數(shù)據(jù)庫(kù)報(bào)錯(cuò)ORA-12154:TNS:無(wú)法解析指定的連接標(biāo)識(shí)符已解決(本地未安裝Oracle
這篇文章主要介紹了PL/SQL登錄Oracle數(shù)據(jù)庫(kù)報(bào)錯(cuò)ORA-12154:TNS:無(wú)法解析指定的連接標(biāo)識(shí)符已解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
oracle存儲(chǔ)過(guò)程創(chuàng)建表分區(qū)實(shí)例
二種oracle存儲(chǔ)過(guò)程創(chuàng)建表分區(qū)實(shí)例2013-11-11
Linux ORCLE數(shù)據(jù)庫(kù)增量備份腳本
Linux下ORCLE數(shù)據(jù)庫(kù)增量備份腳本 (基礎(chǔ)篇) ,需要的朋友可以參考下。2009-11-11

