您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家?guī)碛嘘P如何進行Oracle中update和select 關聯(lián)操作,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
本文主要向大家介紹了Oracle數據庫之oracle update set select from 關聯(lián)更新,通過具體的內容向大家展現(xiàn),希望對大家學習Oracle數據庫有所幫助。
工作中有個需求,現(xiàn)在新表中有一些數據跟老表的基本一樣,這樣只需要把老表中數據搬到新表中就可以了,同時把不同的字段修改下數據即可,在修改字段時發(fā)現(xiàn),需要指定一個條件,比如主鍵id,來修改某條記錄,這樣一條一條修改效率太低了,有沒有批量操作的方式呢?
goods表:
select gid,code,name,code2 from goods;
init_goods表:
select code,name,code2 from init_goods;
goods表中code2根據init_goods表中code2更新;
下面是一個錯誤的做法:
update goods set code2 = (select code2 from init_goods where init_goods.code = goods.code)
goods表數據無法更新,系統(tǒng)會一直卡主,知道崩潰;
方法一:
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只能跟據此處的where子句(內層where)進行相應記錄的匹配更新,一次只能是一條。
上述就是小編為大家分享的如何進行Oracle中update和select 關聯(lián)操作了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。