From: | Csaba Nagy <nagy(at)ecircle-ag(dot)com> |
---|---|
To: | Rory Campbell-Lange <rory(at)campbell-lange(dot)net> |
Cc: | Postgres general mailing list <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: using EXISTS instead of IN: how? |
Date: | 2003-07-22 16:36:10 |
Message-ID: | 1058891770.24769.370.camel@coppola.ecircle.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
You should use something like:
SELECT
name
FROM
people p
WHERE
exists (
SELECT
1
FROM
states
WHERE
name = p.state
)
AND state ~* 'r';
On Tue, 2003-07-22 at 18:28, Rory Campbell-Lange wrote:
> I have been informed that at present (postgres 7.3.2) using IN is not
> advised, and I should replace it with EXISTS. I can't seem to get it to
> work.
>
> I've tried replacing (example):
>
> SELECT
> name
> FROM
> people
> WHERE
> state IN (
> SELECT
> id
> FROM
> states
> WHERE
> name ~* 'r'
> );
>
> with
>
> SELECT
> name
> FROM
> people
> WHERE
> exists (
> SELECT
> 1
> FROM
> states
> WHERE
> name ~* 'r'
> );
>
> However the second example simply finds all records in people.
>
> Thanks for any help,
> Rory
>
> --
> Rory Campbell-Lange
> <rory(at)campbell-lange(dot)net>
> <www.campbell-lange.net>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
> joining column's datatypes do not match
>
From | Date | Subject | |
---|---|---|---|
Next Message | Felipe Schnack | 2003-07-22 16:37:54 | Re: using EXISTS instead of IN: how? |
Previous Message | Rory Campbell-Lange | 2003-07-22 16:28:45 | using EXISTS instead of IN: how? |