嵌套查询不会抛出mssql错误

时间:2014-09-11 15:23:49

标签: sql sql-server

select *
from OuterQueryTable
where OuterQueryColumn in (select OuteryQueryColumn
                           from InnerQueryTable)

InnerQueryTable中不存在OuterQueryColumn。为什么这会导致成功的查询而不是错误?内部查询的预期输出是什么?

1 个答案:

答案 0 :(得分:2)

由于外部作用域,该列存在于内部作用域中,即不会编译:

select *
from OuterQueryTable A
where OuterQueryColumn in (select B.OuteryQueryColumn
                           from InnerQueryTable B)

您的初始查询在逻辑上等同于:

select *
from OuterQueryTable