如果两个表位于不同的模式中,如何连接它们

时间:2011-04-28 04:25:56

标签: sql sql-server

我在SQL Server中有两个不同的模式(比如S1,S2)。这些模式中有两个表(比如S1.Table1,S2.Table2)。我想从架构S1中查询这两个表。

S1和S2都在SQL Server 2005数据库中。我想做这样的事情:

select T1.Id
  from S1.Table1 T1
     , S2.Table2 T2 
 Where T1.Id = T2.refId

3 个答案:

答案 0 :(得分:5)

使用3部分对象名称来指定数据库:我假设您的意思是“数据库”而不是“架构”(在Oracle意义上说)

select T1.Id
from 
  DB1.schema.Table1 T1
 JOIN
   DB2.schema.Table2 T2 ON T1.Id = T2.refId

注意更好的JOIN方式......

答案 1 :(得分:1)

您没有提及数据库是否在同一台服务器上。如果是,您可以按照上面的答案。如果没有,您将需要在其中一个服务器上创建链接服务器,然后您可以通过

引用链接服务器

select T1.Id
  from [linkedservername].DB1.Schema.Table1 T1
     , S2.Table2 T2 
 Where T1.Id = T2.refId

答案 2 :(得分:0)

Select T1.Id

FROM

s1.Table1 T1

JOIN

s2.Table2 T2

WHERE

T1.Id = T2.refId;

这是在MySQL上进行查询的方法。我认为它也适用于Oracle 11g。