我需要在同一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
答案 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