Re: UNION with ORDER BY -allowed? - Mailing list pgsql-general

From Chris Green
Subject Re: UNION with ORDER BY -allowed?
Date
Msg-id 20041202154814.GB29993@areti.co.uk
Whole thread Raw
In response to Re: UNION with ORDER BY -allowed?  (<terry@ashtonwoodshomes.com>)
List pgsql-general
On Thu, Dec 02, 2004 at 10:13:26AM -0500, terry@ashtonwoodshomes.com wrote:
> > -----Original Message-----
> > From: pgsql-general-owner@postgresql.org
> > [mailto:pgsql-general-owner@postgresql.org]On Behalf Of Chris Green
> > Sent: Thursday, December 02, 2004 9:56 AM
> > To: pgsql-general@postgresql.org
> > Subject: [GENERAL] UNION with ORDER BY -allowed?
> >
> >
> > 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)
> Yes, provided the columns are the same data types (or you can cast them to make them the same)
>
Yes, they are all matching types, what I said just below indicates
this (note that the other columns are the *same* columns).

> >
> > 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.
>
> It does, per SQL spec.  Nothing less would make sense if you ask me.  :)
>
That's what I thought it was saying, thanks for confirming it.

--
Chris Green (chris@areti.co.uk)

    "Never ascribe to malice, that which can be explained by incompetence."

pgsql-general by date:

Previous
From: Thierry Missimilly
Date:
Subject: Re: pg_restore taking 4 hours!
Next
From: Richard Huxton
Date:
Subject: Re: Need Help and suggestion.