您好,登錄后才能下訂單哦!
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條件的記錄,
免責聲明:本站發(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)容。