Oracle中update和select 關(guān)聯(lián)操作
1、介紹
本文主要向大家介紹了Oracle數(shù)據(jù)庫之oracle update set select from 關(guān)聯(lián)更新,通過具體的內(nèi)容向大家展現(xiàn),希望對大家學習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)進行相應記錄的匹配更新,一次只能是一條。
到此這篇關(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?19c的參數(shù)sec_case_sensitive_logon與ORA-01017錯誤問題分析
這篇文章主要介紹了Oracle?19c的參數(shù)sec_case_sensitive_logon與ORA-01017錯誤,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04LINUX下Oracle數(shù)據(jù)庫用戶創(chuàng)建方法詳解
這篇文章主要介紹了LINUX下Oracle數(shù)據(jù)庫用戶創(chuàng)建方法,結(jié)合實例形式較為詳細的分析總結(jié)了Oracle數(shù)據(jù)庫用戶創(chuàng)建的具體步驟與相關(guān)技巧,需要的朋友可以參考下2015-12-12Oracle數(shù)據(jù)庫如何使用exp和imp方式導數(shù)據(jù)
在平時的工作中,我們難免會遇到要備份數(shù)據(jù),當然用pl/sql可以實現(xiàn)通過導出數(shù)據(jù)來備份數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫如何使用exp和imp方式導數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-06-06Oracle創(chuàng)建自增表分區(qū)之按月、按天自增表分區(qū)步驟詳解
這篇文章主要給大家介紹了關(guān)于Oracle創(chuàng)建自增表分區(qū)之按月、按天自增表分區(qū)的相關(guān)資料,Oracle表對數(shù)據(jù)進行月度分區(qū)是一種將數(shù)據(jù)分組的有效方法,此方法是將數(shù)據(jù)根據(jù)它們所屬時間段將其存儲為不同分區(qū),需要的朋友可以參考下2023-11-11