ORACLE兩表關(guān)聯(lián)更新三種方式
準備工作
創(chuàng)建如下表數(shù)據(jù)
drop table demo_t1;
drop table demo_t2;
CREATE TABLE DEMO_T1
(
FNAME VARCHAR2(20)
, FMONEY VARCHAR2(20)
);
ALTER TABLE demo_t1 ADD PRIMARY KEY(FNAME);
insert into demo_t1 (fname,fmoney) values('A','20');
insert into demo_t1 (fname,fmoney) values('B','30');
CREATE TABLE DEMO_T2
(
FNAME VARCHAR2(20)
, FMONEY VARCHAR2(20)
);
ALTER TABLE demo_t2 ADD PRIMARY KEY(FNAME);
insert into demo_t2 (fname,fmoney) values('C','10');
insert into demo_t2 (fname,fmoney) values('D','20');
insert into demo_t2 (fname,fmoney) values('A','100');

現(xiàn)需求:參照T2表,修改T1表,修改條件為兩表的fname列內(nèi)容一致。
方式1:update
UPDATE DEMO_T1 t1 SET T1.FMONEY = (select T2.FMONEY from DEMO_T2 T2 where T2.FNAME = T1.FNAME) WHERE EXISTS(SELECT 1 FROM DEMO_T2 T2 WHERE T2.FNAME = T1.FNAME);

如果同時更新多個字段可以參照以下語法:
UPDATE DEMO_T1 t1 SET (字段一,字段二,...) = (select 字段一,字段二,... from DEMO_T2 T2 where T2.FNAME = T1.FNAME) WHERE EXISTS(SELECT 1 FROM DEMO_T2 T2 WHERE T2.FNAME = T1.FNAME);
方式2:內(nèi)聯(lián)視圖更新
注意:需要取數(shù)據(jù)的表,該字段必是主鍵或者有唯一約束
UPDATE ( select t1.fmoney fmoney1,t2.fmoney fmoney2 from demo_t1 t1,demo_t2 t2 where t1.fname = t2.fname )t set fmoney1 =fmoney2;

方式3:merge更新
merge into demo_t1 t1 using (select t2.fname,t2.fmoney from demo_t2 t2) t on (t.fname = t1.fname) when matched then update set t1.fmoney = t.fmoney;

到此這篇關(guān)于ORACLE兩表關(guān)聯(lián)更新三種方式的文章就介紹到這了,更多相關(guān)ORACLE兩表關(guān)聯(lián)更新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle數(shù)據(jù)庫中表壓縮的實現(xiàn)方式和特點
在 Oracle 數(shù)據(jù)庫中,表壓縮是一項重要的功能,旨在優(yōu)化存儲空間和提高性能,Oracle 提供了多種表壓縮技術(shù),以適應(yīng)不同的應(yīng)用場景和需求,以下是 Oracle 數(shù)據(jù)庫中表壓縮的實現(xiàn)方式和特點,需要的朋友可以參考下2024-10-10
利用Oracle數(shù)據(jù)庫發(fā)送郵件的實例代碼
本文給大家利用oracle數(shù)據(jù)庫發(fā)送郵件的實例,代碼簡單易懂,試用性非常高,對此文感興趣的朋友一起學(xué)習(xí)吧2016-09-09
Oracle用decode函數(shù)或CASE-WHEN實現(xiàn)自定義排序
這篇文章主要介紹了Oracle用decode函數(shù)或CASE-WHEN實現(xiàn)自定義排序功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
關(guān)于SQL執(zhí)行計劃錯誤導(dǎo)致臨時表空間不足的問題
故障現(xiàn)象:臨時表空間不足的問題已經(jīng)報錯過3次,客戶也煩了,前兩次都是同事添加5G的數(shù)據(jù)文件,目前已經(jīng)達到40G,占用臨時表空間主要是distinct 和group by 以及Union all 表數(shù)據(jù)量在200W左右,也不至于把40G的臨時表空間撐爆。2013-04-04
AWR 深入分析( Automatic Workload Repository )
本篇文章,小編為大家介紹一下關(guān)于AWR 深入分析( Automatic Workload Repository )有需要的朋友可以參考一下2013-04-04
oracle數(shù)據(jù)庫的導(dǎo)出與導(dǎo)入全過程
文章介紹了如何在Oracle數(shù)據(jù)庫中導(dǎo)出和導(dǎo)入dmp數(shù)據(jù)文件,導(dǎo)出時,首先處理空表,然后使用exp命令導(dǎo)出數(shù)據(jù)到指定文件,導(dǎo)入時,首先創(chuàng)建新用戶,然后使用imp命令導(dǎo)入dmp文件到數(shù)據(jù)庫2026-01-01
Oracle數(shù)據(jù)泵(Data Dump)使用過程當中經(jīng)常會遇到一些奇奇怪怪的錯誤案例
從oracledatabase 10g開始引入了data pump(數(shù)據(jù)泵)工具,它提供了一種基于服務(wù)器的數(shù)據(jù)導(dǎo)出導(dǎo)入使用程序。 所有的data pump都作為一個服務(wù)器進程,數(shù)據(jù)不再必須由一個客戶程序處理。Data Pump工具的導(dǎo)出和導(dǎo)入實現(xiàn)Oracle數(shù)據(jù)庫之間數(shù)據(jù)的傳輸。2014-09-09

