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


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值