我们可以对两个不同的数据库表使用连接吗?

Posted

技术标签:

【中文标题】我们可以对两个不同的数据库表使用连接吗?【英文标题】:Can we use join for two different database tables? 【发布时间】:2012-07-10 17:35:46 【问题描述】:

我们可以对来自不同数据库的两个表使用连接操作吗?如果是,我该怎么做?

两个数据库在同一台服务器上,DBMS 相同。

【问题讨论】:

【参考方案1】:

SQL Server 允许您连接来自不同数据库的表,只要这些数据库位于同一服务器上。连接语法是一样的;唯一的区别是您必须完全指定表名。

假设您在同一台服务器上有两个数据库 - Db1Db2Db1 有一个名为 Clients 的表,其中有一列 ClientIdDb2 有一个名为 Messages 的表,其中有一列 ClientId(让我们暂且不说为什么这些表位于不同的数据库中)。

现在,要对上述表执行连接,您将使用以下查询:

select *
from Db1.dbo.Clients c
join Db2.dbo.Messages m on c.ClientId = m.ClientId

【讨论】:

也许应该注意两个数据库必须在相同的安全上下文中可访问。换句话说,如果您使用两个数据库的不同凭据登录,则上述方法将不起作用。在这种情况下,您可能必须使用“链接服务器”。 正如@IanGoldby 提到的,您可以使用链接服务器。当您链接服务器时,可以定义身份验证方法 - 使用用户上下文或使用仅为链接配置的凭据。【参考方案2】:

您可以在数据库中使用同义词部分。

然后在同义词选项卡的视图向导中找到您保存的同义词并添加到视图并简单地设置内部连接。

【讨论】:

以上是关于我们可以对两个不同的数据库表使用连接吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以为 AWS REDSHIFT 连接位于两个不同数据库中的两个不同表中的数据。

在两个不同数据库中的表之间连接?

通过连接不同服务器上两个数据库中的两个表来查询数据

根据两个不同表上的两列对完全连接进行排序

连接来自不同数据库的同名表的结果

实体框架:使用多个架构还是两个不同的数据库?