Re: ORDER BY - Mailing list pgsql-general

From Alexander Staubo
Subject Re: ORDER BY
Date
Msg-id DFDFB8FE-1787-4508-97C4-5FD12357936A@purefiction.net
Whole thread Raw
In response to ORDER BY  ("MicroUser" <a.shafar@gmail.com>)
Responses Re: ORDER BY
List pgsql-general
On Nov 14, 2006, at 23:03 , MicroUser wrote:

> I need sorted result but the way like this:
>
> 0 | Anna
> 3 | Fernando
> 2 | Link
> 1 | Other
>
> Record '1 | Other' must by at the end of query result.

It's not apparent from your example that you want something other
than a purely lexicographic sort order (after all, "Other" comes
after "Link", "Fernando" and "Anna", so "order by name" already gets
you what you want), but I assume that's what you mean.

If your table is sufficiently small, and the complexity of the actual
query sufficiently low, prepending an expression sort key might suffice:

   select * from foo
   order by (case name when 'Other' then 1 else 0 end), name

Note that PostgreSQL is slow at evaluating case expressions, and this
might prove too slow. 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'

Alexander.

pgsql-general by date:

Previous
From: Ron Johnson
Date:
Subject: Re: Using SAN Splits to instantly copy a DB
Next
From: Martijn van Oosterhout
Date:
Subject: Re: Using SAN Splits to instantly copy a DB