0

鉴于这些表格:

create temporary table a(pid integer, cid integer);
create temporary table b(id integer, code varchar);

这有效,但返回错误的结果:

select pid 
from a 
where cid in (select cid from b where code like 'AE%')

我刚刚有一个这样的查询,我使用了错误的字段,令我惊讶的是,该查询甚至可以工作。这样的查询不只是返回表a中的所有行吗?

您有任何这样编写的查询示例有用吗?

也许我错过了一些东西。

4

1 回答 1

1

您经常需要内部查询的 where 子句中的外部查询字段:

 select * from a
    where exists ( select 1 from b where id = cid );

或者

 select * from a
    where 'HELLO' in (select code from b where id = cid );

我们还可以构建外部字段在 select 子句中(某种)有用的示例:

 select * from a
    where 1 = any (select id-cid from b where code like 'HE%');

因此,访问外部查询的字段是绝对必要的。

于 2012-12-14T10:42:05.090 回答