查询同一服务器上不同数据库中的两个表

时间:2011-08-04 15:39:31

标签: sql sql-server tsql

我需要在同一SQL Server的两个不同数据库中查询两个表。在一个表上,我需要获取所有行(简单选择),另一方面,我需要一个select,但id匹配我的存储过程中的参数。

我尝试过这样做但得到错误

  

无法绑定多部分标识符。

我该如何解决这个问题?

QUERY:

  SELECT QUALITY_CENTER, POSTCODE_ID, (SELECT   [QCID]   
  FROM [Website_Interactive].[dbo].[IIPCentre_UserObject]
  WHere LoginID = @loginID)
  FROM IIP_QC_LIST

4 个答案:

答案 0 :(得分:15)

听起来你错了什么。您可以使用以下方法查询另一个数据库中的表:

SELECT tn.ID, tn.NAME
FROM [Database Name].[Schema].[TableName] as tn

我故意添加了一个两个字的数据库名称,因为你必须在它周围加上方括号才能被识别。您的架构很可能是dbo

如果您向我们展示您的查询并向我们提供数据库名称,我可以提供更完整的答案。

<强>更新

您确定正确拼写“中心”吗?我注意到你把它拼写为IIPCentre_UserObject中的“中心”,我认为它可能适合英国(?),但你拼写为QUALITY_CENTER的“中心”。我认为它在你的环境中以某种方式拼写。

答案 1 :(得分:7)

您可以通过向SQL对象(在本例中为SQL表)提供FQN(完全限定名称)来轻松完成此操作。表的FQN语法如下:

[database-name].[schema-name].[table-name]

示例:

SELECT a, b, c FROM Database1.Schema1.Table1
UNION 
SELECT a, b, c FROM Database2.Schema2.Table2

其中Database1是您的第一个数据库,Database2是您的第二个数据库。

答案 2 :(得分:1)

可以/直接从同一服务器上的不同数据库中进行选择。您需要使用完全限定的名称,即

SELECT * from database.schema.table 

例如

SELECT * FROM northwind.dbo.orders where id = @id

答案 3 :(得分:0)

如果1个数据库中的表与另一个表

的值相同,则可以查询两个单独的数据库

喜欢这些:

SELECT * FROM DB1.dbo.MyTable db1,DB2.dbo.MyTable db2 where db1.table1=db2.table1
相关问题