溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Oracle中update和select?關聯(lián)操作

發(fā)布時間:2022-01-15 15:07:53 來源:億速云 閱讀:269 作者:柒染 欄目:開發(fā)技術

這期內容當中小編將會給大家?guī)碛嘘P如何進行Oracle中update和select 關聯(lián)操作,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1、介紹

本文主要向大家介紹了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;

如何進行Oracle中update和select?關聯(lián)操作

init_goods表:

select code,name,code2 from init_goods;

如何進行Oracle中update和select?關聯(lián)操作

2、解決方法

2.1、需求

goods表中code2根據init_goods表中code2更新;

2.2、錯誤演示

下面是一個錯誤的做法:

update goods set code2 = 
(select code2 from init_goods where init_goods.code = goods.code)

goods表數據無法更新,系統(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只能跟據此處的where子句(內層where)進行相應記錄的匹配更新,一次只能是一條。

上述就是小編為大家分享的如何進行Oracle中update和select 關聯(lián)操作了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI