sql – 为什么子查询中的“列名无效”XYZ错误?虽然列名不在子查
发布时间:2020-12-12 08:49:45 所属栏目:MsSql教程 来源:网络整理
导读:当我运行这个查询 SELECT CustomerId FROM Stocks.dbo.Suppliers 它给我这个错误.无效的列名称“CustomerId”.此错误是有效的,因为“供应商”表中没有列CustomerId;但是当我在子查询中使用相同的查询时,它不会给出任何错误,例如. SELECT * FROM SomeOtherDb.d
当我运行这个查询
SELECT CustomerId FROM Stocks.dbo.Suppliers 它给我这个错误.无效的列名称“CustomerId”.此错误是有效的,因为“供应商”表中没有列CustomerId;但是当我在子查询中使用相同的查询时,它不会给出任何错误,例如. SELECT * FROM SomeOtherDb.dbo.Customer WHERE CustomerId In( SELECT CustomerId FROM Stocks.dbo.Suppliers) 这里我期待同样的错误“无效的列名称”,但查询运行没有任何错误. 完全限定名称只是惯例,dbs都在同一台服务器上. CustomerId确实存在于SomeOtherDb.dbo.Customer表中,但不存在于子查询中. 为什么是这样的行为?这是什么与子查询? 谢谢. 解决方法子查询从外部查询继承列.我猜你的SomeOtherDb.dbo.Customer有一个CustomerId列(这似乎也是名字). 这也可能意味着您没有使用子查询来处理您想要执行的操作 – 如果子查询中的表不具有CustomerId列(并且似乎如此,否则在运行子查询时不会出现错误本身),则子查询选择并返回外部CustomerId,并且由于这是子查询中唯一的列,因此子查询是无用的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |