3

考虑下表。注意 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)

看看我是如何忘记的 id 列B被命名的bid

我不明白为什么这个查询会执行并从A. 如果有的话,我希望它会回来1 to 5

查看执行计划对我没有帮助。在下图中查看表 B 的表扫描实际上如何返回 10 行。 在此处输入图像描述

那么,这真的是我编写的查询的预期行为吗?我希望收到类似的错误消息Invalid column name 'id',这是我select id from B在单独运行时得到的。

4

0 回答 0