SQL Server IN运算符的意外输出

时间:2015-07-03 08:13:46

标签: sql-server-2012 in-operator

考虑以下表格。记住id列的不同名称。

CREATE TABLE A (id int)
CREATE TABLE B (bid int)

A包含值1 to 10。 B包含值1 to 5

现在,我编写了一个查询,通过比较它们的ID来查找两个表中存在的所有行。错误地,我写了一个不正确的查询:

select id from A
 where id in (select id from B)

了解我忘了B的id列名为bid

的方法

我不明白为什么此查询会执行并返回A的所有行。如果有的话,我希望它返回1 to 5

看一下执行计划对我没有帮助。查看表B的表扫描实际上如何返回下图中的10行。 enter image description here

那么,这真的是我写的查询的预期行为吗?我希望会出现Invalid column name 'id'这样的错误消息,这是我在单独运行select id from B时得到的结果。

0 个答案:

没有答案