Andreas Kretschmer <akretschmer@xxxxxxxxxxxxx> wrote: >> I have a simple query like: >> SELECT * FROM customer WHERE id IN (23, 56, 2, 12, 10) >> The problem is that I need to retrieve the rows in the same order as the set of >> ids provided in the select statement. Can it be done? > No. The only way is: > select * from ... where id in (...) order by case when id=23 then 1, > case when id=56 then 2 end, case when id=2 then 3 end, ... Or, quick 'n' dirty: | SELECT * FROM customer | WHERE id IN (23, 56, 2, 12, 10) | ORDER BY POSITION(':' || id || ':' IN ':23:56:2:12:10:'); When using CASE, make sure you read the documentation to the end: I stumbled upon "CASE id WHEN 23 THEN 1 WHEN 56 THEN 2 WHEN [...] END" only just recently by pure chance :-). Tim -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general