oracle一條語句完成新增和修改

2021-08-01 17:47:57 字數 586 閱讀 4316

系統在執行過程中,由於功能的更新會產生一些指令碼去更新現有的資料資訊。

如:update tony_t_sscj_bak a set a.cj = (select b.cj from tony_t_sscj b where a.guid = b.guid and a.km = b.km); 這樣一條sql。基表的資料只有6000條,執行這個語句需要3s多的時間。

當我們使用mergin into的時耗時僅為0.047s。

--要更新的表

merge into tony_t_sscj_bak a

--比較的表

using tony_t_sscj b

--條件

on (a.guid = b.guid and a.km = b.km)

--條件匹配時執行update 不匹配時執行insert

when matched then

update set a.cj = b.cj

when not matched then

insert (guid,xh,xm,xb,xw,km,cj) values (b.guid,b.xh,b.xm,b.xb,b.xw,b.km,b.cj);

使用一條INSERT語句完成多表插入

這是一條顛覆常規的插入方法,一條insert語句可以完成向多張表的插入任務。小小地展示一下這種插入方法。1.建立表t並初始化測試資料,此表作為資料來源。sec ora10g create table t x number 10 y varchar2 10 sec ora10g insert into...

SQL 使用一條INSERT語句完成多表插入

這是一條顛覆常規的插入方法,一條insert語句可以完成向多張表的插入任務。小小地展示一下這種插入方法。1.建立表t並初始化測試資料,此表作為資料來源。sec ora10g create table t x number 10 y varchar2 10 sec ora10g insert into...

一條SQL語句研究

現有 select from t where a in 5,3,2,1,8,9,30.假設 a 是主鍵,in裡面的引數是唯一的。現要求輸出的結果集按照 in 提供的引數順序排序。而不是按照a本身的排序規則排序?另 如果不要求使用臨時表或表變數,那麼又有什麼辦法實現。臨時表方案參卡 create ta...