条款范围

时间:2012-01-19 14:25:48

标签: sql sql-server-2008 scoping in-clause

我正在为一家拥有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)

如果这是设计行为,有人可以请我指出相关文件吗?感谢

1 个答案:

答案 0 :(得分:3)

这是设计的。

correlated sub query中的外部查询访问列是完全有效的。在某些情况下,这可能是理想的语义。

相关问题