Re: WHERE ... IN condition and multiple columns in subquery - Mailing list pgsql-general

From Tom Lane
Subject Re: WHERE ... IN condition and multiple columns in subquery
Date
Msg-id 14473.1477663608@sss.pgh.pa.us
Whole thread Raw
In response to WHERE ... IN condition and multiple columns in subquery  (Alexander Farber <alexander.farber@gmail.com>)
List pgsql-general
Alexander Farber <alexander.farber@gmail.com> writes:
> is it please possible to rewrite the SQL query

>         SELECT DISTINCT ON (uid)
>         uid,
>         female,
>         given,
>                 photo,
>                 place
>         FROM words_social
>         WHERE uid IN (SELECT player1 FROM games)
>                 OR uid IN (SELECT player2 FROM games)
>         ORDER BY uid, stamp DESC

You could do

    WHERE uid IN (SELECT player1 FROM games UNION SELECT player2 FROM games)

(or possibly UNION ALL would be a trifle faster).  This still reads the
"games" CTE twice; but since you're evaluating that CTE elsewhere in the
query, I think the additional follower node isn't worth trying to get
rid of.

            regards, tom lane


pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: deadlock error - version 8.4 on CentOS 6
Next
From: Steve Clark
Date:
Subject: Re: deadlock error - version 8.4 on CentOS 6