我正在为一家拥有SQL Server 2008的公司做一些工作。其中一个存储过程引用(或似乎引用)了一个不存在的列,但没有错误。
查询具有以下结构:
select col1, col2 from FOO
where col3 in
(select id from BAZ where datecreated between @date1 and @date2)
**BAZ不包含名为[datecreated]的列,但FOO包含。**如果我按如下方式更改查询以限定列名,则会出现错误:
select col1, col2 from FOO
where b in
(select id from BAZ where BAZ.datecreated between @date1 and @date2)
如果这是设计行为,有人能给我指一下相关文件吗?感谢
它是经过设计的。
从关联子查询中的外部查询访问列是完全有效的。在某些情况下,这可能是所需的语义。