加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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,并且由于这是子查询中唯一的列,因此子查询是无用的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读