Re: ORDER BY

From: John Sidney-Woollett <johnsw(at)wardbrook(dot)com>
To: George Pavlov <gpavlov(at)mynewplace(dot)com>
Cc: Alexander Staubo <alex(at)purefiction(dot)net>, MicroUser <a(dot)shafar(at)gmail(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: ORDER BY
Date: 2006-11-16 06:43:40
Message-ID: 455C089C.50202@wardbrook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Alternative options for what they're worth - you'd have to explain to
see how efficient they are

select id, name from (
select lower(name) as sortkey, id, name from table where name != 'Other'
union
select 'zzzzz' as sortkey, id, name from table where name = 'Other'
) as t
order by sortkey

select id, name from (
select case when name='Other' then 'zzzzz' else lower(name) end as
sortkey, id, name from table

) as t
order by sortkey

Notice that the sort will be case insensitive in these examples which
may be something that you also want.

John

George Pavlov wrote:
>> For larger tables, you may have to resort to a
>> union:
>>
>> select * from foo where name != 'Other' order by name
>> union
>> select * from foo where name = 'Other'
>
> Alas, this suggestion is wrong on two counts: (a) UNION expects a single
> ORDER BY that applies to the whole recordset and which has to come at
> the end; (b) UNION re-sorts anyway (it needs to eliminate the dupes) --
> maybe you are thinking UNION ALL? So, to follow your advice he may want
> a query like this, although it seems quite silly and there still isn't
> an ironclad guarantee re. the final result sorting:
>
> select * from
> (select * from foo where name != 'Other' order by name) x
> union all
> select * from foo where name = 'Other'
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
> choose an index scan if your joining column's datatypes do not
> match

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2006-11-16 06:54:37 Re: Recovering deleted or updated rows
Previous Message Tom Lane 2006-11-16 06:26:03 Re: schema rename - is analyze necessary?