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

将结果集插入到另一张表,且数据必须有条件的不重复
在mssql中,使用sql查询到满足条件的一个结果集,然后插入到A表中,A表中可能存在与这个结果集相似的数据。

结果集:
MeterNo    ReType FaultTime    Remark UploadTime StreetNo PoleNo IsTreate
20100011 0 2013-04-03  2013-04-03  0005 0011     0
20100016 0 2013-04-03 2013-04-03  0005 0016     0
20100008 0 2013-04-03  2013-04-03  0001 0002     0
20100012 0 2013-04-03  2013-04-03  0005 0012     0
20100013 0 2013-04-03  2013-04-03  0005 0013     0
20100010 0 2013-04-03  2013-04-03 0005 0010     0

插入A表的条件:如果A表中存在 20200011 这条数据,那么就检查下IsTreate是否等于0,如果等于0,则不插入,如果不等于0,则插入。
如果A表中不存在20200011这条数据,那么直接插入

这些动作实在存储中完成的,用程序一条一条的查询验证就算了。
sql

------解决方案--------------------
INSERT INTO A
SELECT * FROM 原表 WHERE MeterNo NOT IN(SELECT MeterNo FROM A WHERE IsTreate=0)

------解决方案--------------------
insert into tbA
selectc * from #t t where not exists(select 1 from tbA where t.MeterNo=MeterNo)
or exists (select 1 from tbA where t.MeterNo=MeterNo and IsTreate<>0)
------解决方案--------------------
insert into T1 --结构T1/T2表相同时可不指定列
select * 
from T2 as a 
where not exists(select 1 from T1 where MeterNo=a.MeterNo or (MeterNo=a.MeterNo and IsTreate=0))