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

一条插入语句,求大神帮忙有一张表A a1 a2 a3一张表Bb1 b2 b3 b4一张表Cc1 c2 c3 c4一张表Dd1 d2 d3 d4 d5

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



有一张表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)