sql中从一个表向另一个表中插入不同的数据(在线等)

由于业务需要,a表的数据会实时更新,我们需要做一个存储过程匹配到作业将a变得数据插入到b表中,怎么做到不插入重复的数据呢(插入过的下次插入时就不再插入只插入a表中的新数据),高手解答,在线等

我一般都采用下面2种方式:

1、看你的A表的数据里面有没有时间字段,如果有时间字段,就设定B表里的时间大于A表的时间的才插入就可以了(当然要根据你实际的表数据,可能还需要加入唯一的标示字段)

2、加入导入标记,如果导入过的字段,就更新为1,为1的数据不再导入(不是很建议,因为跨数据库的更新或者过程中的更新都不是很建议)追问

谢谢你,如果我这里有时间字段,具体的语句怎么写

追答

大概给你写了下

declare @enterdateA datetime                                                     
                                                            
select @enterdateA=convert(varchar(19),max(enterdate),120)  
from 表B with (nolock)   
      
      
insert into 表B(字段)                                    
select 字段                                                      
from  表A with (nolock)                                                      
where docdate>='2012-02-01'  and enterdate>@enterdateA

 根据实际情况,用with (nolock),,,这个有时候会出现脏读

追问

如果是通过主键来区分呢比如主键是ma_sid,想用notexist函数进行区分,麻烦再写下

追答create table #tmp(ma_sid)
insert into #tmp(ma_sid)
select ma_sid
from 表B
insert into 表B(。。。。。。。)
select ......
from 表A a
WHERE NOT EXIST (SELECT * FROM #tmp B WHERE A.ma_sid=B.ma_sid)

温馨提示:答案为网友推荐,仅供参考
相似回答