溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

oracle insert all 復(fù)合表插入

發(fā)布時間:2020-07-11 19:47:33 來源:網(wǎng)絡(luò) 閱讀:830 作者:天黑順路 欄目:關(guān)系型數(shù)據(jù)庫

insert all (復(fù)合表插入),是將一個查詢結(jié)果同時插入多個表中的功能。使用insert all的好處是通過讀取一次源表就可以插入多張目標表,減少重復(fù)讀取的開銷。

語法:

INSERT [ALL] [conditional_insert_clause]

[insert_into_clause value_clause] (subquery);


conditional_insert_clause is:

[ALL] [FIRST]

[WHEN condition THEN] [insert_into_clause value_clause]

[ELSE] [insert_into_clause value_clause]


all:不考慮先后關(guān)系,只要滿足條件,就全部插入; 
first:考慮先后關(guān)系,如果有數(shù)據(jù)滿足第一個when條件又滿足第二個when條件,則執(zhí)行第一個then插入語句,第二個then就不插入第一個then已經(jīng)插入過的數(shù)據(jù)了。 
其區(qū)別也可描述為,all只要滿足條件,可能會作重復(fù)插入;first首先要滿足條件,然后篩選,不做重復(fù)插入 


示例:

insert all 
   when c1<1000 then into samall_orders values (oid,c1,sid,cid)
   when c1 <2000 then into medium_orders values (oid,c1,sid,cid)
   when c1>2000 and c1 <2900 then into large_orders vlaues (oid,c1,sid,cid)
   else into special_orders
   select oid,c1,sid,cid  
   from orders;


     指定insert first 當?shù)谝粋€when條件成立時,執(zhí)行該when條件后的語句,并且跳過后面的 WHEN 子句(后面的when語句都不再考慮滿足第一個When子句的記錄,即使該記錄滿足when語句中的條件)。

insert first
   when c1<1000 then into samall_orders values (oid,c1,sid,cid)
   when c1 <2000 then into medium_orders values (oid,c1,sid,cid)
   when c1>2000 and c1 <2900 then into large_orders vlaues (oid,c1,sid,cid)
   else into special_orders
   select oid,c1,sid,cid  
   from orders;


    上面兩條語句區(qū)別在第二個when條件,insert all 中 第二個條件會插入orders 表中c1<2000的記錄,insert first 中第二個when條件會插入orders表中1000<c1<2000的記錄,insert first中插入第二個when子句中的表時排除了第一個when條件的記錄,

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI