考虑下表。注意 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
在单独运行时得到的。