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%')

間違ったフィールドを使用するようなクエリがありましたが、そのクエリが機能することに驚きました。このようなクエリは、テーブルからすべての行を返すだけではありませんか?

このように書かれた、役に立つと思われるクエリの例はありますか?

多分私は何かが欠けています。

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 に答える