From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Ian McWilton <ian(at)blazingcactus(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: ORDER BY using specifc values |
Date: | 2000-04-13 07:03:20 |
Message-ID: | 9548.955609400@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Ian McWilton <ian(at)blazingcactus(dot)com> writes:
> I need to return the results of a SELECT ordered by a
> column but in a way that is neither ascending or
> descending.
> The ORDER BY column can have one of five values and I
> want to specify which values are returned in the list
> in which order.
> An example table below shows the data in the DB:
> INDEX | VALUE
> 1, A
> 2, B
> 3, B
> 4, C
> 5, B
> ...and what I want is for my queries result to be
> ordered by VALUE with C put first in the list, then A,
> then B.
> Having investigated it appears that ORDER BY does not
> seem to be any help as it restricts the ordering to ASC
> or DESC.
Make a function f(x) that converts the stored values into a suitable
ordering, say C -> 1, A -> 2, B -> 3. Then do
ORDER BY f(column)
If you have no more-elegant ideas at hand, f() could be defined
using a CASE expression. In fact you could just write the CASE
expression right in ORDER BY, but if you need the same ordering
in many different queries then defining a function is probably
the way to go.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Oliver Mueschke | 2000-04-13 07:42:30 | Re: ORDER BY using specifc values |
Previous Message | Gerhard Dieringer | 2000-04-13 06:32:59 | Antw: ORDER BY using specifc values |