sql - SQL server - 在链接服务器上查找重复项
问题描述
我需要在两个链接的 SQL 服务器上找到相同数据库/表/列的
重复项请注意,该列在每个单独的 SQL 服务器中的表本身内也可能有重复项!
IE
server1.tableName.columnName:
john
john
mary
kate
kate
server2.tableName.columnName:
kate
我希望这种情况下的结果是kate
,因为它是两者中唯一存在的条目
我试过这个:
select table1.columnName, table2.columnName, count(*)
from [server1].[dbName].[dbo].[tableName] table1
inner join [server2].[dbName].[dbo].[tableName] table2
ON table1.columnName = table2.columnName
group by table1.columnName, table2.columnName having count(table1.columnName) > 1
这给出了一组结果
我的问题是这是正确的吗?我会得到server1 和 server2上存在的
任何值的条目吗?columnName
dbName.tableName
解决方案
我会在 server1 和 server2 上的 dbName.tableName 中获得 columnName 中的任何值的条目吗?
不完全是。having
如果没有- 连接确定是否有任何匹配,这将做你想要的。
如果您可以完全忽略计数,则可以使用替代公式exists
:
select t1.columnName
from [server1].[dbName].[dbo].[tableName] t1
where exists (select 1
from [server2].[dbName].[dbo].[tableName] t2
where t1.columnName = t2.columnName
);