Kas*_*hif 11 sql t-sql sql-server sql-server-2005 subquery
当我运行此查询时
SELECT CustomerId FROM Stocks.dbo.Suppliers
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误.列名称'CustomerId'无效.此错误有效,因为Suppliers表中没有列CustomerId; 但是当我在子查询中使用相同的查询时,它不会给出任何错误.例如
SELECT *
FROM SomeOtherDb.dbo.Customer
WHERE CustomerId In( SELECT CustomerId
FROM Stocks.dbo.Suppliers)
Run Code Online (Sandbox Code Playgroud)
在这里,我期待相同的错误"无效的列名称",但查询运行没有任何错误.
完全限定名称只是惯例,两个dbs都在同一台服务器上.
CustomerId确实存在于SomeOtherDb.dbo.Customer表中,但不存在于子查询中.
为什么会这样?这是子查询的东西吗?
谢谢.
Ban*_*i-T 14
子查询从外部查询继承列.
我想你的SomeOtherDb.dbo.Customer确实有一个CustomerId列(似乎也可能来自名称).
这也可能意味着你没有使用子查询你想用它做什么 - 如果子查询中的表没有CustomerId列(看起来如此,否则在运行子查询时不会出错)然后子查询选择并返回外部CustomerId,因为这是子查询中唯一的列,子查询是无用的.
归档时间: |
|
查看次数: |
3636 次 |
最近记录: |