日期:2014-05-17  浏览次数:20460 次

两张表 插入不重复数据的问题
一个存储过程,是将A表(统计表)每天往B表(记录表)插入前一天的数据

A表(临时表):每日统计数据  字段为  date a1 a2 a3 a4,A表中有重复数据
B表(记录表): 字段为 自增量id  date b1 b2 b3 b4 

现在的情况是:统计条件发生改变(新增配对条件),导致以前插入B表的数据不全,要将新增记录补插进B表

select a1,a2,a3,a4 from A   记录1000条
实际新增数据为10条
select a1,a2,a3,a4 from A 
except (select b1,b2,b3,b4 from B) 记录1条

问题出现了,因为A表中本身有重复数据,导致使用except把重复数据过滤了
本人新手,请教各位,该怎么改这个存储过程啊?


------解决方案--------------------
select a1,a2,a3,a4 from A m 
where not exists(select 1 from B n
where n.a1=m.a1 and n.a2=m.a2 and n.a3=m.a3 and n.a4=m.a4)
------解决方案--------------------
修改一下:

select a1,a2,a3,a4 
from A
left join B
       on a.a1 = b.b1 and
          a.a2 = b.b2 and
          a.a3 = b.b3 and
          a.a4 = b.b4
where b.b1 is null