【问题标题】:Join results from tables with same name from different databases连接来自不同数据库的同名表的结果
【发布时间】:2009-12-16 15:10:04
【问题描述】:

假设我们有两个数据库,一个名为 db1,另一个名为 db2。 两个数据库都有一个名为Employees 的表。无论如何,即使它们具有相同的名称,是否也可以连接两个表的结果?

请注意,这两个表没有冲突的字段名称。我知道这很愚蠢,但我们必须为现有数据库创建一个扩展数据库,并且为了简单起见,我们希望两个数据库中的表名相同。

非常感谢您的帮助,谢谢

我也知道这里回答了一个类似的问题,但我发现它在这种情况下没有帮助。

【问题讨论】:

  • 你用的是什么品牌的数据库?

标签: sql


【解决方案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.MyColumne2.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 这是你的意思吗?

    【讨论】:

      猜你喜欢
      • 2011-06-21
      • 2018-02-06
      • 1970-01-01
      • 2014-10-05
      • 2014-02-26
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多