Retain the order while select in postgres

postgresql, sql

Solution

You cannot; the order will depend on the execution plan, the physical order of the table and other things.

You could do that with an array and an explicit `ORDER BY`:

SELECT u.id
FROM users AS u
   JOIN unnest(ARRAY[2,2,1]) WITH ORDINALITY AS arr(elem, ord)
      ON u.id = arr.elem
ORDER BY arr.ord;

Problem

In psql (at least in v9), if I do ``` select id from users where id in (2, 1, 1); ``` and ``` select id from users where id in (1, 2); ``` They both return the results in the same order (and eliminate dups) like: `1, 2`. How do I return `2, 1, 1` instead in the first query?

Original source

Related problems