Sql server Azure SQL server在语句中未引发错误

Sql server Azure SQL server在语句中未引发错误,sql-server,azure-sql-database,Sql Server,Azure Sql Database,当我编写包含in子句的sql语句时,如果in语句中的列不存在,它不会抛出错误,而是忽略in语句并返回一个结果集 下面的查询将返回T1中的所有行 SELECT * FROM T1 WHERE Id IN(SELECT Id FROM T2) 这是SQL Azure的正确行为吗? 我的本地MS SQL server抛出一个错误,表示该列不存在。坦率地说,您所描述的是不可能的。如果IN语句中的列不存在,Azure将抛出异常。无法返回结果集。目前,SQLServer执行查询的方式与Azure v12执

当我编写包含in子句的sql语句时,如果in语句中的列不存在,它不会抛出错误,而是忽略in语句并返回一个结果集

下面的查询将返回T1中的所有行

SELECT * FROM T1 WHERE Id IN(SELECT Id FROM T2)
这是SQL Azure的正确行为吗?
我的本地MS SQL server抛出一个错误,表示该列不存在。

坦率地说,您所描述的是不可能的。如果IN语句中的列不存在,Azure将抛出异常。无法返回结果集。目前,SQLServer执行查询的方式与Azure v12执行查询的方式几乎没有区别。每种方法都可能产生不同的执行计划,但本质上两者之间的差别很小。

坦率地说,你所描述的是不可能的。如果IN语句中的列不存在,Azure将抛出异常。无法返回结果集。目前,SQLServer执行查询的方式与Azure v12执行查询的方式几乎没有区别。每一个都可能生成不同的执行计划,但本质上两者之间的差别很小。

这是预期的行为,与Sql Server中的行为相同。基本上,如果子查询中引用的列不存在于子查询的FROM子句所引用的表中,但存在于外部查询的FROM子句所引用的表中,则查询执行时不会出错。SQL Server使用外部查询中的表名隐式限定子查询中的列。 这里记录了这一点:
这是预期的行为,与Sql Server中的行为相同。基本上,如果子查询中引用的列不存在于子查询的FROM子句所引用的表中,但存在于外部查询的FROM子句所引用的表中,则查询执行时不会出错。SQL Server使用外部查询中的表名隐式限定子查询中的列。 这里记录了这一点:

如下面的回答中所述,这是不可能的。如果您能够重新编程,您应该向CSS提交一个错误。您必须在我的v12 SQL Azure数据库上对此进行测试,并且无法重现您的问题。您可以添加有关表架构和您正在运行的确切查询的信息吗?如下面的回答中所述,这是不可能的。如果您能够重新编程,您应该使用CSS提交一个错误。CSS必须在我的v12 SQL Azure数据库上对此进行测试,并且无法再现您的问题。您可以添加关于表模式和您正在运行的确切查询的信息吗?我知道应该是这样,但我可以复制它。如果IN语句中的表没有名为Id的列,而您选择了该列,则它会忽略IN语句,除非IN语句中的表没有任何行,否则结果集将为空。唯一可以解释这一点的是,两个表的架构不相同。我知道应该是这样的,但我可以复制它。如果IN语句中的表没有名为Id的列,而您选择了该列,则会忽略IN语句,除非IN语句中的表没有任何行,否则结果集将为空。唯一可以解释这一点的是,两个表的架构不相同。