select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名用:select * from 表 where exists (select 1 from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 where 列1=表.列1 and 列2=表.列2)
select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名用:select * from 表 where exists (select 1 from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 where 列1=表.列1 and 列2=表.列2)
不同的记录用:select * from 表 where not exists (select 1 from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 where 列1=表.列1 and 列2=表.列2)
用两表主键的左或者右连接, 得到NULL的值就是不同的记录,不行吗?
大力的方法可行~~要是oracle,两个记录相减就可以判断了,呵呵~~
不同的记录用:select * from Table where not exists (select 1 from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=RemoteIP;User ID=sa;Password=Key' ).库名.dbo.表名 where 列1=表.列1 and 列2=表.列2)
如果字段很多的话,是否要…… where 列1=表.列1 and 列2=表.列2 and 列3=表.列3 ……)岂不是很烦琐。只有这种方法吗?
我运行过了,最好在OPENDATASOURCE( 'SQLOLEDB', 'Data Source=RemoteIP;User ID=sa;Password=Key' ).库名.dbo.表名 加上表的别名。即: OPENDATASOURCE( 'SQLOLEDB', 'Data Source=RemoteIP;User ID=sa;Password=Key' ).库名.dbo.表名 as a
当这个操作完成后,判断rowcount的值
如果其大于零
撤消事务
并判断出有不同的数据
反之
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名用:select * from 表 where exists (select 1 from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名 where 列1=表.列1 and 列2=表.列2)
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名用:select * from 表 where exists (select 1 from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名 where 列1=表.列1 and 列2=表.列2)
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名 where 列1=表.列1 and 列2=表.列2)
'SQLOLEDB',
'Data Source=RemoteIP;User ID=sa;Password=Key'
).库名.dbo.表名 where 列1=表.列1 and 列2=表.列2)
'SQLOLEDB',
'Data Source=RemoteIP;User ID=sa;Password=Key'
).库名.dbo.表名 加上表的别名。即:
OPENDATASOURCE(
'SQLOLEDB',
'Data Source=RemoteIP;User ID=sa;Password=Key'
).库名.dbo.表名 as a