Re: UNION with ORDER BY -allowed?

From: <terry(at)ashtonwoodshomes(dot)com>
To: "'John Sidney-Woollett'" <johnsw(at)wardbrook(dot)com>, <chris(dot)green(at)isbd(dot)co(dot)uk>
Cc: <pgsql-general(at)postgresql(dot)org>
Subject: Re: UNION with ORDER BY -allowed?
Date: 2004-12-02 15:22:55
Message-ID: 016701c4d882$cd032520$2766f30a@development.greatgulfhomes.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> -----Original Message-----
> From: pgsql-general-owner(at)postgresql(dot)org
> [mailto:pgsql-general-owner(at)postgresql(dot)org]On Behalf Of John
> Sidney-Woollett
> Sent: Thursday, December 02, 2004 10:10 AM
> To: chris(dot)green(at)isbd(dot)co(dot)uk
> Cc: pgsql-general(at)postgresql(dot)org
> Subject: Re: [GENERAL] UNION with ORDER BY -allowed?
>
>
> wrap the whole statement in another select

Yes you can do that, but you don't need to. An order by clause explicitly applies the sort action
AFTER the UNION action has been performed.

Terry Fielder
Manager Software Development and Deployment
Great Gulf Homes / Ashton Woods Homes
terry(at)greatgulfhomes(dot)com
Fax: (416) 441-9085

>
> select col1, col2, col5, col6 from (
> SELECT
> col1, col2, col5, col6
> FROM
> table
> WHERE
> col2 = 'X'
> UNION
> SELECT
> col3, col4, col5, col6
> FROM
> table
> WHERE
> col4 = 'X'
> ) as t
> order by coalesce(col1, col3);
>
> John Sidney-Woollett
>
> Chris Green wrote:
>
> > It's not quite clear (to me at least) whether I can have a UNION and
> > an ORDER BY in a SELECT statement.
> >
> > What I want to do is:-
> >
> > SELECT
> > col1, col2, col5, col6
> > FROM
> > table
> > WHERE
> > col2 = 'X'
> > UNION
> > SELECT
> > col3, col4, col5, col6
> > FROM
> > table
> > WHERE
> > col4 = 'X'
> > ORDER BY
> > coalesce(col1, col3)
> >
> > Is this valid syntax allowed by postgresql? (I'm not at the system
> > where postgresql is installed at the moment so I can't just try it)
> >
> > col1 and col3 are both DATE columns. col2 and col4 are both
> > varchar(1).
> >
> > I want the ORDER BY to order the result of the UNION.
> >
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Thierry Missimilly 2004-12-02 15:46:12 Re: pg_restore taking 4 hours!
Previous Message terry 2004-12-02 15:13:26 Re: UNION with ORDER BY -allowed?