Marko Kreen <marko@l-t.ee> writes:
> # select o.id from op o union all SELECT -1 order by o.id;
> ERROR:  Relation 'o' does not exist
>> 
>> This is not valid SQL.  For one thing, the table alias "o" is not
>> visible outside the first component SELECT.
>> 
>> Yes, I know 7.0 took it... but its handling of ORDER BY on UNION
>> was pretty darn broken.
> Doh.  But if I have several tables with a field 'id'?  Then only
> way is to use the column number?
You could assign column names:
SELECT o.id as id1, p.id as id2, ... UNION ... ORDER BY id1, id2;
> Anyway such stuff should be documented I guess.  From current
> docs I read that it should work.
Where?
> I would have expected that one
> of the select's aliases would be transferred to ORDER BY but its
> not possible?
The first subselect's column names are transferred to ORDER BY.
        regards, tom lane