如何对比不同服务器上的两个表内的数据?
我现在遇到的问题是:
1、服务器A,有一个表1,表1的结构如下:
name(主键) flag
A 0
B 0
C 1
D 1
E 1
F 1
G 0
H 0
2、服务器B,有一个表2,表2的结构如下:
name(主键)
A
C
E
3、我现在想将服务器A的表1的flag的值,凡是在服务器B,表2内的,都修改为1,不在的都修改为0.
---------------------
目前的做法:
1、检索出来表2的所有值。
2、利用循环通过程序将表1的flag修改为1;
3、检索出来表1的flag为1的值,利用循环,把不在表2的值修改为0.
我觉得这样做有点麻烦了。
不知各位有没有什么好的方法?谢谢!!
------解决方案--------------------在服务器A建立服务器B的连接服务器
然后直接运行语句
update a set
flag = case when b.name is not null then 1 else 0 end
from 表1 a
left join 服务器B.dbname2.dbo.表2 b
on a.name = b.name
------解决方案--------------------创建一个链接服务器,跨库查询,看你的目前做法你应该能实现跨库查询了
可以首先将A表中flag全部改0,然后再将B服务器上有的改1
update tb set flag=1 where name in
(select name from [B].[B库].dbo.tb)