Re: Sorting by an arbitrary criterion

Поиск
Список
Период
Сортировка
От hubert depesz lubaczewski
Тема Re: Sorting by an arbitrary criterion
Дата
Msg-id 20090709181109.GB25676@depesz.com
обсуждение исходный текст
Ответ на Sorting by an arbitrary criterion  (Craig James <craig_james@emolecules.com>)
Ответы Re: Sorting by an arbitrary criterion  ("Hartman, Matthew" <Matthew.Hartman@krcc.on.ca>)
Список pgsql-performance
On Thu, Jul 09, 2009 at 09:26:42AM -0700, Craig James wrote:
> Suppose I have a large table with a small-cardinality CATEGORY column (say, categories 1..5).  I need to sort by an
arbitrary(i.e. user-specified) mapping of CATEGORY, something like this: 
>
>  1 => 'z'
>  2 => 'a'
>  3 => 'b'
>  4 => 'w'
>  5 => 'h'
> So when I get done, the sort order should be 2,3,5,4,1.
> I could create a temporary table with the category-to-key mapping, but is there any way to do this in a single SQL
statement?

You can do it like this:

select c.*
from categories c, ( values (1, 'z'), (2, 'a'), (3, 'b'), (4, 'w'), (5, 'h') ) as o (id, ordering) on c.id = o.id
order by o.ordering

depesz

--
Linkedin: http://www.linkedin.com/in/depesz  /  blog: http://www.depesz.com/
jid/gtalk: depesz@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007

В списке pgsql-performance по дате отправления:

Предыдущее
От: "Hartman, Matthew"
Дата:
Сообщение: Re: Huge difference in query performance between 8.3 and 8.4 (possibly)
Следующее
От: "Hartman, Matthew"
Дата:
Сообщение: Re: Sorting by an arbitrary criterion