oracle兩表關聯更新方法

2021-09-29 23:23:04 字數 1610 閱讀 2848

--建立兩張測試表

create table table1(

id varchar2(10) ,

val varchar2(20)

); create table table2(

id varchar2(10),

val varchar2(20)

);--分別給兩張測試表插入測試資料

insert into table1 values ('01','1111');

insert into table1 values ('02','222');

insert into table1 values ('02','2222');

insert into table1 values ('03','3333');

insert into table1 values ('04','4444');

insert into table1 values ('06','6666');

commit;

insert into table2 values ('01','aaaa');

insert into table2 values ('02','bbbb');

insert into table2 values ('03','cccc');

insert into table2 values ('04','dddd');

insert into table2 values ('05','eee');

commit;

--查詢一下兩張表

select * from table1

select * from table2

--table1中id=06 val有值,但是table2中id無06,結果table1 id=06對應的val被清空

--這種寫法,表2中id在表1中有的val就會被同步更新過去,表2沒有的id,表1對應val內容會被清空。

update table1 set table1.val = (select table2.val from table2 where table2.id = table1.id);

--正確寫法:對於 table1中存在,但是table2中沒有的id欄位記錄,不做修改;

--這種寫法,更新前先判斷表1中對應的id在表2中是否存在,不存在就跳過。存在就把表2的val更新過去

update table1

set table1.val = (select table2.val from table2 where table2.id = table1.id)

where exists(select 1 from table2 where table2.id = table1.id);

--跨表更新特定條件的一條記錄到其它表

update table1 set table1.val = (select table2.val from table2 where table2.id = table1.id) where table1.id='03';

--刪除測試表

drop table table1;

drop table table2;

TinyOS更新方法

介紹兩種方法 在linux或者cygwin環境下更新 設定環境變數 export cvsroot pserver anonymous tinyos.cvs.sourceforge.net cvsroot tinyos 接入命令 cvs d pserver anonymous tinyos.cvs.s...

軟體更新方法

軟體更新方法 摘要 本發明涉及通訊領域,公開了一種軟體更新方法,使得能夠在一次更新過程中,提供軟體新增功能的無縫銜接和新版本軟體的格式更改,同時使得軟體公升級方法對未來的未知需求有最佳的適應能力,並能提高軟體公升級效率。本發明將要公升級的軟體分為三個部分 新版本軟體包頭部 與軟體公升級相關的部分和其...

Android Studio SDK 更新方法

1 sudo vim hosts 輸入密碼後進行編輯,新增如下幾行 1 2 3 4 5 6 7 google主頁 203.208.46.146 www.google.com 這行是為了方便開啟android開發官網 現在好像不翻也可以開啟 在preference中進行設定,修改配置如下 然後勾選強制...