Okay, so why does wrapping the order by in a function fix it? (or not doing
a join, or doing an implicit join)

Cody Cutrer


On Wed, May 22, 2013 at 11:36 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:

> Cody Cutrer <c...@instructure.com> writes:
> > create table test1 (id integer, sortable_name varchar);
> > create table test2 (id integer, test1_id integer);
> > select test1.sortable_name, sortable_name from test1 inner join test2
> > on test1.id=test1_id order by sortable_name;
> > ERROR:  ORDER BY "sortable_name" is ambiguous
> > LINE 1: ...t1 inner join test2 on test1.id=test1_id order by
> sortable_n...
>
> I think it's unhappy because "sortable_name" could refer to either of
> the output columns (under the old SQL92 convention that an ORDER BY item
> is an output column name).  Probably the easiest way to dodge that is to
> qualify the name, ie ORDER BY test1.sortable_name.  A different line of
> attack is to use AS to relabel whichever output column you don't want to
> match.
>
>                         regards, tom lane
>

Reply via email to