使用 SQL Server 2008 R2(版本 10.50.4000.0):
我有两张桌子。我想删除另一个表中存在 ID 的表中的数据。很简单。但是,由于键入错误,我发现似乎是解析器错误。
在下面的脚本中,[SomeID] 是 Table1 中的一列,但实际上在 Table2 中并不存在
Delete from Table1 where [SomeID] in (Select [SomeID] from Table2)
如果您运行子查询"Select [SomeID] from Table2
,您会收到一条相应的错误消息,指出该列不存在。
如果你运行整个删除查询,它运行没有错误,并删除 table1 中的所有内容
似乎解析器应该发现表 2 中不存在该列。我知道您可以使用子查询外部的列,并且我意识到解析器假设我打算使用 table1 中的列,但是因为我没有指定 table2 中的任何列,所以在我看来,解析器应该足够聪明,知道有什么问题。幸运的是,发生这种情况时,我们处于测试环境中。:)
谢谢,托尼