【SQL】根据插入语句条件判断插入哪张表,多表插入,2017年

来源:互联网 发布:pyqt4 linux 安装 编辑:程序博客网 时间:2024/05/21 07:10


假如一个在线电子商务系统,我们现在需要根据订单表体现的消费金额将客户简单分为大中小三类并分别插入到三张表中.


订单表 order (order_id number, cust_id number, amount number);
小客户表 small_cust (cust_id number, tot_amt number);
中客户表 med_cust (cust_id number, tot_amt number);
大客户表 big_cust (cust_id number, tot_amt number);
 
如果总消费金额小于10000, 则归入小客户;
如果总消费金额大于10000并小于50000,则归入中客户;
如果总消费金额大于50000,则归入大客户;
 
要实现这个需求,如果我们不知道INSERT ALL/FIRST 的用法,可能会用一段PL/SQL遍历查询订单表返回的游标,然后逐条记录判断客户消费总额来决定插入哪个表,需要分别写三个INSERT语句,这样也可以达到目的,但远没有使用INSERT FIRST简洁和高效。
 
下面是用INSERT FIRST实现的例子,是不是一目了然?
 


insert first      when tot_amount < 10000 then      into small_cust_test      when tot_amount >=10000 and tot_amount <50000 then      into med_cust_test      else      into big_cust_test      select cust_id,sum(amount) as tot_amount       from order_test      group by cust_id;




FIRST:表示第一WHEN条件符合后就跳到下条记录,不再判断其它WHEN条件。 
ALL  :表示不管前面的WHEN条件是否已经满足,后续的条件都会被判断,可能会一次出现多表同时插入。 

 

转自:http://stevex.blog.51cto.com/4300375/1042856

原创粉丝点击