Oracle数据库多表插入

一、使用背景

    当我们需要根据不同条件将一个子查询结果集的数据分别插入不同表中时可以使用多表插入,快速插入数据记录。

二、如何使用

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子句。


猜你喜欢

转载自blog.csdn.net/zorro_jin/article/details/81052920