您好,登錄后才能下訂單哦!
insert all (復合表插入),是將一個查詢結果同時插入多個表中的功能。使用insert all的好處是通過讀取一次源表就可以插入多張目標表,減少重復讀取的開銷。
語法:
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:不考慮先后關系,只要滿足條件,就全部插入;
first:考慮先后關系,如果有數據滿足第一個when條件又滿足第二個when條件,則執行第一個then插入語句,第二個then就不插入第一個then已經插入過的數據了。
其區別也可描述為,all只要滿足條件,可能會作重復插入;first首先要滿足條件,然后篩選,不做重復插入
示例:
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 當第一個when條件成立時,執行該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;
上面兩條語句區別在第二個when條件,insert all 中 第二個條件會插入orders 表中c1<2000的記錄,insert first 中第二個when條件會插入orders表中1000<c1<2000的記錄,insert first中插入第二個when子句中的表時排除了第一個when條件的記錄,
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。