当前位置: 代码迷 >> Oracle开发 >> 一条插入话语,求大神帮忙
  详细解决方案

一条插入话语,求大神帮忙

热度:75   发布时间:2016-04-24 06:57:31.0
一条插入语句,求大神帮忙



有一张表A 
a1 a2 a3

一张表B
b1 b2 b3 b4

一张表C

c1 c2 c3 c4

一张表D
d1 d2 d3 d4 d5 来源表名

现在的需求是 
表B同A比对,当b.b2=a.a2时取表B的部分字段插入表D并在来源表名那列标注区分是哪个表来的数据
表C同A比对,当c.b2=a.a2时取表C的部分字段插入表D并在来源表名那列标注区分是哪个表来的数据

能一个语句搞定吗,或者一个存储过程

------解决方案--------------------
引用:
忘了写上,不能插入重复数据,你这个会报违反唯一约束



insert into d
  (d1, d2, d3, d4, d5, 来源表名)
  select *
    from (select b1, b2, b3, b4, null b5, 'B' b6
            from b
           where exists (select 1 from a where a.a2 = b.b2)
          union
          select c1, c2, c3, c4, null, 'C'
            from c
           where exists (select 1 from a where a.a2 = c.c2)) t
   where not exists (select 1
            from d
           where d1 = t.b1
             and d2 = t.b2
             and d3 = t.b3
             and d4 = t.b4
             and 来源表名 = t.b6)
  相关解决方案