连接来自不同数据库的同名表的结果
Posted
技术标签:
【中文标题】连接来自不同数据库的同名表的结果【英文标题】:Join results from tables with same name from different databases 【发布时间】:2009-12-16 15:10:04 【问题描述】:假设我们有两个数据库,一个名为 db1,另一个名为 db2。 两个数据库都有一个名为Employees 的表。无论如何,即使它们具有相同的名称,是否也可以连接两个表的结果?
请注意,这两个表没有冲突的字段名称。我知道这很愚蠢,但我们必须为现有数据库创建一个扩展数据库,并且为了简单起见,我们希望两个数据库中的表名相同。
非常感谢您的帮助,谢谢
我也知道这里回答了一个类似的问题,但我发现它在这种情况下没有帮助。
【问题讨论】:
你用的是什么品牌的数据库? 【参考方案1】:您应该能够通过它们的完全限定名称来引用这些表。如果它们在不同的模式中,您可以说:
SELECT * FROM Schema1.MyTable as T1 JOIN Schema2.MyTable as T2 ON T1.Something = T2.SomethingElse
如果它们实际上是不同的数据库,则需要一个数据库链接,在这种情况下,它会变为 MyTable1@Database1 等。
【讨论】:
非常感谢,我不知道为什么我在这么简单的时候尝试使用连接。竖起大拇指的伙计!感谢所有发帖的人,但我会把这个奖励给第一个发帖的人,我认为这是公平的。【参考方案2】:是的,你绝对可以这样做,你只需要像这样给它们起别名:
SELECT ... FROM [db1].[dbo].[Employees] as e1 INNER JOIN [db2].[dbo].[Employees] as e2 ON ...
然后你可以通过引用e1.MyColumn
或e2.MyOtherColumn
得到你需要的。
【讨论】:
【参考方案3】:您应该能够通过 database.owner.table 引用它们,例如db1.dbo.Employees 和 db2.dbo.Employees(假设表归 dbo 所有)
【讨论】:
是的,我试过了,但是在添加 INNER JOIN db2.Employees ON db2.Employees.EmpId = db1.Employees.UUID 后查询立即失败了两个表中都存在数据,因此连接本身不应该失败,这就是为什么我认为使用相同的表名会出现问题。【参考方案4】:select * from db1,db2 where db1.employee=db2.employee 这是你的意思吗?
【讨论】:
以上是关于连接来自不同数据库的同名表的结果的主要内容,如果未能解决你的问题,请参考以下文章