考虑以下表格。记住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行。
那么,这真的是我写的查询的预期行为吗?我希望会出现Invalid column name 'id'
这样的错误消息,这是我在单独运行select id from B
时得到的结果。