首頁 資料庫 mysql教程 Oracle 之update

Oracle 之update

Jun 07, 2016 pm 05:33 PM
數位

1、根据条件更新表里的某个字段值,如下:update test t set t.b_salary =case when t.b_id = 5 then 5000 when t.b_id = 6 the

1、根据条件更新表里的某个字段值,如下:
update test t set t.b_salary =
case when t.b_id = 5 then 5000
    when t.b_id = 6 then 6000
    when t.b_id = 7 then 7000
end
where t.b_id in (5,6,7)
说明: where条件部分一定要把记录限制为只需要更新的部分,否则其他部分会被更新为空。


2、2表关联update某个字段的
a)、一对一关联
update test1 t set t.a_salary =
( select a.b_salary from test a where a.b_id = t.a_id
)
where exists (select 1 from test a where a.b_id = t.a_id )
;
commit;


b)、一对多关联
(1)、目标表一个ID存在多条记录,源头是一个ID存一条记录,此种场景和一对一没有区别
update test1 t set t.a_salary =
( select a.b_salary from test a where a.b_id = t.a_id
)
where exists (select 1 from test a where a.b_id = t.a_id )
;
commit;


(2)、目标表一个ID一条记录,源头是一个ID存在多条记录
报错ora-01427 :单行子查询返回多条记录
本质上是目标表在源表根据关联ID去找的时候,一个ID找到了多条记录,返回给目标表的一条记录里目标值为多个。
若返回多个记录值都是一样的,返回任意一条都可以,则此时对返回值加上max,写法如下:


update test1 t set t.a_salary =
( select max(a.b_salary) from test a where a.b_id = t.a_id
)
where exists (select 1 from test a where a.b_id = t.a_id )


c)、多对多关联
报错ora-01427 :单行子查询返回多条记录
本质上是目标表在源表根据关联ID去找的时候,一个ID找到了多条记录,返回给目标表的一条记录里目标值为多个。
若返回多个记录值都是一样的,返回任意一条都可以,则此时对返回值加上max,写法如下:
update test1 t set t.a_salary =
( select max(a.b_salary) from test a where a.b_id = t.a_id
)
where exists (select 1 from test a where a.b_id = t.a_id )
;


commit;


说明: exists的作用,防止更新没有关联上的记录。若不加exists ,则目标表中无关记录会被置空。故这个exists一定要加上。


总结:
  1、对于更新表内容,一定要把更新内容限制在只要更新的部分,where部分一定要有。


  2、2表关联update的时候,目标表根据关联ID从源表去找记录的时候,,存在ID重复的记录和目标表没有关系,要注意源表存在ID重复的记录。


 对于大表关联update,普通的写法,根本跑不动,百度了一下,根据rowid来更新,果然可以跑动。方法如下:

--t1 为源表


--t2 为要更新的目标表


declare
 cursor cur is
  select
    a.t1_name, b.rowid row_id
    from t1 a, t2 b
    where a.t1_id = b.t2_id
    order by b.rowid;


 v_counter number;

 


begin
 v_counter := 0;
 for row in cur loop
  update t2 t
      set t.t2_name = row.t1_name
    where rowid = row.row_id;
  v_counter := v_counter + 1;
  if (v_counter >= 1000) then
    commit;
    v_counter := 0;
  end if;
 end loop;
 commit;
end;

相关阅读:

Oracle update执行计划原理解析与优化

Oracle 中 update nowait 的使用方法

Oracle存储过程使用实例之update的使用

Oracle update关联表的思路总结 

Oracle for update of 和 for update区别

linux

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1668
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1256
24
全球數字虛擬幣交易平台排行榜前十(2025權威排名) 全球數字虛擬幣交易平台排行榜前十(2025權威排名) Mar 06, 2025 pm 04:36 PM

2025年全球數字虛擬幣交易平台競爭激烈,本文根據交易量、安全性、用戶體驗等指標,權威發布2025年全球十大數字虛擬幣交易平台排行榜。 OKX憑藉強大的技術實力和全球化運營策略居首,Binance以高流動性和低費用緊隨其後。 Gate.io、Coinbase、Kraken等平台憑藉各自優勢穩居前列。榜單涵蓋Huobi、KuCoin、Bitfinex、Crypto.com和Gemini等交易平台,各有特色,但投資需謹慎。選擇平台需考慮安全性、流動性、費用、用戶體驗、幣種選擇及監管合規性等因素,理性投資

C程式用來求出一個數的最大質因子 C程式用來求出一個數的最大質因子 Aug 27, 2023 am 10:09 AM

質因數 - 在數論中,正整數的質因數是精確整除該整數的質因數。找出這些數字的過程稱為整數分解或質因數分解。例 - 288 的質因數是:288=2x2x2x2x2

幣圈十大交易所2025年最新 數字貨幣app排行榜前十 幣圈十大交易所2025年最新 數字貨幣app排行榜前十 Feb 27, 2025 pm 06:33 PM

虛擬貨幣十大交易平台排行榜(2025年最新): 幣安:全球龍頭,高流動性,監管受關注。 OKX:龐大用戶基數,支持多種幣種,提供槓桿交易。 Gate.io:資深交易所,多種法幣支付方式,提供多種交易對和投資產品。 Bitget:衍生品交易所,高流動性,低費用。 火幣:老牌交易所,支持多種幣種和交易對。 Coinbase:美國知名交易所,受監管嚴格。 Phemex等等。

十大數字貨幣交易平台 數字貨幣交易平台top10榜單最新 十大數字貨幣交易平台 數字貨幣交易平台top10榜單最新 Mar 17, 2025 pm 05:57 PM

十大數字貨幣交易平台:1. OKX,2. Binance,3. Gate.io,4. Huobi Global,5. Kraken,6. Coinbase,7. KuCoin,8. Bitfinex,9. Crypto.com,10. Gemini,這些交易所各具特色,用戶可根據安全性、費用、幣種選擇、用戶界面和客戶支持等因素選擇適合自己的平台。

數字貨幣app十大交易平台 炒幣正規平台app推薦 數字貨幣app十大交易平台 炒幣正規平台app推薦 Mar 07, 2025 pm 06:51 PM

本文推薦十個數字貨幣交易App:1. OKX;2. Binance;3. Gate.io;4. Huobi Global;5. Kraken;6. Coinbase;7. KuCoin;8. Crypto.com;9. Bitfinex;10. Poloniex。選擇平台需考慮安全性、流動性、交易費用、幣種選擇、用戶界面、客服支持及法規合規性等因素,謹慎評估風險,切勿盲目跟風。

全球十大虛擬幣交易平台app正版下載安裝教程 全球十大虛擬幣交易平台app正版下載安裝教程 Mar 12, 2025 pm 05:33 PM

本文提供Binance、OKX、Gate.io、Huobi Global(火幣)、Coinbase、KuCoin(庫幣)、Kraken和Bitfinex等主流數字貨幣交易平台的安卓和蘋果手機APP下載方法。無論是安卓用戶還是蘋果用戶,都能輕鬆找到對應平台的官方APP下載鏈接,並按照步驟完成安裝。 文章詳細指導了在各自官網或應用商店搜索下載,並針對安卓系統安裝APK文件的特殊步驟做了說明,方便用戶快速便捷地下載使用。

靠譜的數字貨幣平台有哪些 十大正規數字貨幣交易平台2025 靠譜的數字貨幣平台有哪些 十大正規數字貨幣交易平台2025 Mar 17, 2025 pm 05:45 PM

靠譜的數字貨幣平台包括:1. OKX,2. Binance,3. Gate.io,4. Huobi Global,5. Kraken,6. Coinbase,7. KuCoin,8. Bitfinex,9. Crypto.com,10. Gemini,這些交易所各具特色,用戶可根據安全性、費用、幣種選擇、用戶界面和客戶支持等因素選擇適合自己的平台。

十大數字虛擬幣交易所推薦 正規的數字貨幣交易app排行榜 十大數字虛擬幣交易所推薦 正規的數字貨幣交易app排行榜 Mar 17, 2025 pm 05:33 PM

十大數字虛擬幣交易所包括:1. OKX,2. Binance,3. Gate.io,4. Huobi Global,5. Kraken,6. Coinbase,7. KuCoin,8. Bitfinex,9. Crypto.com,10. Gemini,這些交易所各具特色,用戶可根據安全性、費用、幣種選擇、用戶界面和客戶支持等因素選擇適合自己的平台。

See all articles