Oracle中update和select 關聯操作
1、介紹
本文主要向大傢介紹瞭Oracle數據庫之oracle update set select from 關聯更新,通過具體的內容向大傢展現,希望對大傢學習Oracle數據庫有所幫助。
工作中有個需求,現在新表中有一些數據跟老表的基本一樣,這樣隻需要把老表中數據搬到新表中就可以瞭,同時把不同的字段修改下數據即可,在修改字段時發現,需要指定一個條件,比如主鍵id,來修改某條記錄,這樣一條一條修改效率太低瞭,有沒有批量操作的方式呢?
goods表:
select gid,code,name,code2 from goods;
init_goods表:
select code,name,code2 from init_goods;
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表數據無法更新,系統會一直卡主,知道崩潰;
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 關聯的文章就介紹到這瞭,更多相關Oracle update和select 關聯內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- ORACLE數據庫應用開發的三十個註意事項
- SQL Server2019數據庫之簡單子查詢的具有方法
- PostgreSQL 添加各種約束語法的操作
- mybatis使用oracle進行添加數據的方法
- MySQL悲觀鎖與樂觀鎖的實現方案