Oracle資料庫多表插入
阿新 • • 發佈:2018-12-30
一、使用背景
當我們需要根據不同條件將一個子查詢結果集的資料分別插入不同表中時可以使用多表插入,快速插入資料記錄。
二、如何使用
1、在此我新建三個表用於儲存滿足不同條件的資料
CREATE TABLE small_customers( customer_id VARCHAR2(16), sum_orders NUMBER(12, 2) ); CREATE TABLE medium_customers( customer_id VARCHAR2(16), sum_orders NUMBER(12, 2) ); CREATE TABLE lager_customers( customer_id VARCHAR2(16), sum_orders NUMBER(12, 2) );
2、將按照顧客不同等級的訂單量分別存入上面三個表中
INSERT ALL
WHEN sum_orders < 10000 THEN INTO small_customers
WHEN sum_orders >= 10000 AND sum_orders < 100000 THEN INTO medium_customers
ELSE INTO lager_customers
SELECT customer_id, SUM(order_total) sum_orders
FROM oe.orders
GROUP BY customer_id;
3、結果檢驗
SELECT * FROM small_customers;
SELECT * FROM medium_customers;
SELECT * FROM lager_customers;
三、補充說明注意INSERT關鍵字後面ALL的使用,當使用了ALL時,每一個WHEN子句都會進行判斷,若滿足條件而會執行THEN中的插入子句,類似於Java中的switch子句;
除了ALL之外,還可以使用FIRST,FIRST則是按順序判斷WHEN子句,只執行第一個滿足條件的WHEN子句,後面的WHEN子句則直接被跳過,不再進行判斷,類似於Java中if-else子句。