【发布时间】:2010-01-21 15:46:27
【问题描述】:
当我运行这个查询时
SELECT CustomerId FROM Stocks.dbo.Suppliers
它给了我这个错误。列名“CustomerId”无效。此错误有效,因为 Suppliers 表中没有 CustomerId 列;但是当我在子查询中使用相同的查询时,它不会给出任何错误例如
SELECT *
FROM SomeOtherDb.dbo.Customer
WHERE CustomerId In( SELECT CustomerId
FROM Stocks.dbo.Suppliers)
这里我期待同样的错误“无效的列名”,但查询运行没有任何错误。
完全限定名称只是约定两个数据库都在同一台服务器上。
CustomerId 确实存在于 SomeOtherDb.dbo.Customer 表中,但不存在于子查询中。
为什么会出现这种行为?这与子查询有关吗?
谢谢。
【问题讨论】:
-
在任何一种情况下都会向我抛出无效列错误。完全限定名称只是约定还是通过链接服务器?
-
完全限定名只是一个约定。两个数据库都在同一台服务器上。
标签: sql sql-server sql-server-2005 tsql subquery