日期:2014-05-18  浏览次数:20559 次

不同数据库 表数据的复制
我现在有两个WCHF2,WCHF3结构一样 其中有一张表Staff 两个数据库中的Staff表的数据不一样 我想把WCHF3中在WCHF2不存在的数据导入到WCHF2中,

我写了个复合语句老是报错  

insert into WCHF3.Staff select * from WCHF2.Staff where WCHF2.Staff.id in (select WCHF2.dbo.Staff.id from WCHF2.dbo.Staff where WCHF2.dbo.Staff.id <> WCHF3.dbo.Staff.id)

请高手指点指点

------解决方案--------------------
SQL code

insert into WCHF2.dbo.Staff 
select * from WCHF3.dbo.Staff t 
where not exists
(select 1 from WCHF2.dbo.Staff where id=t.id)

------解决方案--------------------
[code=SQL]
--这年过的有点晕,cte用错了, 这里是用表表达式或 试图来查要的数据,,要插入可以把WCHF2中staff删除,select * 这个表达式 into WCHF2中staff表
;with c
as
(
select * from WCHF2.dbo.Staff 
union 
select * from WCHF3.dbo.Staff
)
select * from c

--思路2是
--如果非要插入数据
插入 2 查 3 和 (2 和 3 的交集) 差集 --这里的意识就是2和3 都有的从3中去掉插入 2 或 把差集 改成 --not exists 3 not exists( 2和3 的交集) ,这样不知道好理解点不