sql与mysql中2个表数据进行匹配_sql - 通过连接不同服务器上的两个数据库中的两个表来查询数据...

10个解决方案

64 votes

您需要使用OPENQUERY来创建服务器链接。 有关用法,请参阅参考文档。 建立服务器链接后,您将正常构建查询,只需在数据库名称前加上其他服务器。即:

-- FROM DB1

SELECT *

FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1

INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2

ON tab1.ID = tab2.ID

建立链接后,您还可以使用OPENQUERY在远程服务器上执行SQL语句,并仅将数据传输回给您。 这可以更快一点,它将让远程服务器优化您的查询。 如果您将数据缓存在上面示例中的DB1上的临时(或内存)表中,那么您将能够像加入标准表一样查询它。 例如:

-- Fetch data from the other database server

SELECT *

INTO #myTempTable

FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')

-- Now I can join my temp table to see the data

SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1

INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID

查看OPENQUERY的文档以查看更多示例。 上面的例子非常人为。 我肯定会使用此特定示例中的第一个方法,但如果您使用查询过滤掉某些数据&

你可能感兴趣的:(sql与mysql中2个表数据进行匹配_sql - 通过连接不同服务器上的两个数据库中的两个表来查询数据...)