这里发生了什么事?
我有两个表,test1和test2:

create table test1 (id1 int4 primary key);
create table test2 (id2 int4 primary key);

如所料,此查询:
select id1 from test2;

产生语法错误:
ERROR:  column "id1" does not exist
LINE 1: select id1 from test2;

但是,当我尝试执行此查询时:
select * from test1 where id1 in (select id1 from test2);

PostgreSQL不抱怨,执行查询并给出:
 id1
-----
(0 rows)

这里面有逻辑吗?或者我应该提交一个错误报告?

最佳答案

外部select中的列在子选择中可见。
您的查询相当于:

select *
from test1
where test1.id1 in (select test1.id1 from test2);

关于sql - 带有语法错误的PostgreSQL子查询给出了有效的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46215082/

10-13 22:22