当我编写包含in子句的sql语句时,如果in语句中的列不存在,则不会抛出错误,而只是忽略in语句并返回结果集。
下面的查询将返回T1的所有行
SELECT * FROM T1 WHERE Id IN(SELECT Id FROM T2)
这是SQL Azure的正确行为吗? 我的本地MS SQL服务器抛出一个错误,说该列不存在。
答案 0 :(得分:2)
答案 1 :(得分:0)
这是预期的行为,与Sql Server中的行为相同。基本上,如果子查询中引用的列在子查询的FROM子句引用的表中不存在,但存在于外部查询的FROM子句引用的表中,则查询执行时没有错误。 SQL Server使用外部查询中的表名隐式地限定子查询中的列。 这在此处记录: https://technet.microsoft.com/en-us/library/ms178050(v=sql.105).aspx