我一般都采用下面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)