Re: Subquery with IN or EXISTS

Поиск
Список
Период
Сортировка
От Carl van Tast
Тема Re: Subquery with IN or EXISTS
Дата
Msg-id ngl4rtstb3jljr86v3hei05f74s70bmg3v@4ax.com
обсуждение исходный текст
Список pgsql-sql
Hi A.,

On 26 Sep 2001 07:24:41 -0700, anssiman@my-deja.com (A. Mannisto)
wrote:

>Hello,
>
>does anybody know why this:
>SELECT * FROM tab WHERE col1 IN (SELECT col2 FROM TAB2)
>
>equals this:
>SELECT * FROM tab WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 =
>col2)
>
>but this:
>SELECT * FROM tab WHERE col1 IN (SELECT col2 FROM TAB2 WHERE
>col3='huu')
>
>equals _NOT_ this:
>SELECT * FROM tab WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 =
>col2 AND col3='huu')
>
>E.g. resultset is not the same in last two statements.
>Can I get same set as IN statement somehow using EXISTS (performance
>issue)?

I cannot reproduce your problem, results are equal here with
PostgreSQL 7.1.3.  Could you post your CREATE TABLE and INSERT
statements?

Re performance: There's more than one way to do it.  (Where did I hear
this before? ;-))  You might try:

SELECT tab.* FROM tab, tab2 WHERE tab.col1 = tab2.col2;

or SELECT DISTINCT ... , if col2 is not unique in tab2.

Kind regards,Carl van Tast


В списке pgsql-sql по дате отправления:

Предыдущее
От: Carl van Tast
Дата:
Сообщение: Re: Query does not work: parse ERROR, Re: How to enter lists into database: Problems with solution.
Следующее
От: Haller Christoph
Дата:
Сообщение: Re: is it possible to get the number of rows of a table?