pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Ian Harding <iharding@pakrat.com>
To: pgsql-sql@postgresql.org
Subject: Re: Order By Question
Date: Mon, 22 Jan 2001 17:20:39 -0800
Message-ID: <3A6CDC67.4A79076E@pakrat.com> (raw)
References: <3A6CD7E4.8BE6DDC3@pacbell.net>

Tristan Colson wrote:

> This seems like the answer must be pretty easy, but I can't think of it:
>
> In the following statement:
>
> select field1 from my_table where field2 in (3, 1, 2);
>
> How can I modify this statement so that the record are returned in the
> order of first those records having field2 = 3, then field2 = 1, then
> field2 = 2.
> As it stands, I am getting them returned in the order of the value of
> field1.

You can't =;^)

If you add field 2 to the select list and order by it, you can get them in
1,2,3 or 3,2,1 order.

Alternatively, you could add a case statement to your query to add a column
that would be used just to order the data.  My syntax may be foobar but it
would be something like:

select field1,
    CASE
        WHEN field2 = 3 THEN 1
        WHEN field2=1 THEN 2
         WHEN field2=2 THEN 3
    AS orderfield
from my_table
where field2 in (3,1,2)
order by orderfield;

- Ian




view thread (15+ messages)  latest in thread

Message-ID: <3A6CDC67.4A79076E@pakrat.com>
Permalink:  ../3A6CDC67.4A79076E@pakrat.com/
Also on:    postgresql.org/message-id/3A6CDC67.4A79076E@pakrat.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: iharding@pakrat.com
  Subject: Re: Order By Question
  In-Reply-To: <3A6CDC67.4A79076E@pakrat.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox