Re: reuse a subquery - Mailing list pgsql-novice

From Thom Brown
Subject Re: reuse a subquery
Date
Msg-id AANLkTimgwNreCVg-Gm+Gj3OEGi80qJM0SjFj8G-ghH5o@mail.gmail.com
Whole thread Raw
In response to reuse a subquery  (Charles Holleran <scorpdaddy@hotmail.com>)
Responses Re: reuse a subquery  (Charles Holleran <scorpdaddy@hotmail.com>)
List pgsql-novice
On 9 August 2010 15:04, Charles Holleran <scorpdaddy@hotmail.com> wrote:
> I have a query that uses the same subquery twice.  What is the correct
> syntax to reuse the subquery instead of running it twice?  The query below
> 'works' but reruns the identical subquery.  The point of the subquery is to
> limit the join work to the subset of table_a where c = 3 instead of the
> entire table_a with c ranging from 0 to 65535.  The planner helps expedite
> the rerun query, but there must be a better syntax for subquery reuse.
>
> E.g.
>
> SELECT *
>
> FROM
> (
>   SELECT *
>   FROM table_a
>   WHERE c = 3
>   ORDER BY d
> ) AS T1
>
> LEFT JOIN
>
> (
>   SELECT *
>   FROM table_a
>   WHERE c = 3
>   ORDER BY d
> ) AS T2
>
> ON T2.d = (T1.d + 5)
> WHERE T2.d IS NULL
> ORDER BY T1.d;
>

Can't you just do:

SELECT *
FROM table_a
WHERE d+5 NOT IN (SELECT t1.d FROM table_a AS t1)
ORDER BY d;

--
Thom Brown
Registered Linux user: #516935

pgsql-novice by date:

Previous
From: Charles Holleran
Date:
Subject: reuse a subquery
Next
From: Charles Holleran
Date:
Subject: Re: reuse a subquery