Re: Subquery with IN or EXISTS

From: anssiman(at)my-deja(dot)com (A(dot) Mannisto)
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: Subquery with IN or EXISTS
Date: 2001-09-27 09:49:22
Message-ID: 8b9752ea.0109270149.21bdd725@posting.google.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Carl van Tast <vanTast(at)Pivot(dot)at> wrote in message news:<ngl4rtstb3jljr86v3hei05f74s70bmg3v(at)4ax(dot)com>...
> 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

Sorry,
I mixed up names of the columns of different tables.
There was columns of the same name in both tables and
my statement uses the wrong one (of course). Now it's OK!

Thanks for advise!

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Oleg Olenin 2001-09-27 10:04:47 How to get BLOB length?
Previous Message Haller Christoph 2001-09-27 09:17:03 Re: is it possible to get the number of rows of a table?