首页 > 解决方案 > 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上存在
任何值的条目吗?columnNamedbName.tableName

标签: sqlsql-server

解决方案


我会在 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
             );

推荐阅读