一条插入语句,求大神帮忙有一张表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)
