From: | Carl van Tast <vanTast(at)Pivot(dot)at> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Subquery with IN or EXISTS |
Date: | 2001-09-26 22:45:43 |
Message-ID: | ngl4rtstb3jljr86v3hei05f74s70bmg3v@4ax.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi A.,
On 26 Sep 2001 07:24:41 -0700, anssiman(at)my-deja(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Haller Christoph | 2001-09-27 09:17:03 | Re: is it possible to get the number of rows of a table? |
Previous Message | Robin's PG-SQL List | 2001-09-26 22:43:51 | Aggregate Aggravation |