Quiz Stack is a SAAS based product. Which can conduct,manage,analysis quizzes.We are using rails and postgresql as our backend.It’s subdomain app and hence we decide to use postgresql schema based approach for storing/querying data.

While working on one of the feature It was needed to draw some random fixed questions for each user.So each user has different order of questions which is maintain for each specific user.

In Mysql it’s called field function to achieve this ,unfortunately there isn’t anything as of I know in PostgresSql or is it ?

Well we can obviously write a function which can help you do the same.Let’s the function name be sortbyid.

Are you wanting a random order or are you talking about presenting it a fixed order– basically give me id 1, then id 3, then 2, etc?

in the first case (random), I’d say to just order it by random. in the second case, I’d create a generic function like this:
CREATE FUNCTION array_search(needle ANYELEMENT, haystack ANYARRAY)
RETURNS INT AS $$
SELECT i
FROM generate_subscripts($2, 1) AS i
WHERE $2[i] = $1
ORDER BY i
$$ LANGUAGE sql STABLE;

then run something like this:
select * from question q
order by array_search(q.id,'{1,3,2,6,9}’::integer[])

This is great! Yes it requires two queries but it’s far less expensive memory-wise when you have to, say, spit a large number of rows into a PDF. Cut my memory footprint by 90% being able to page this and preserve the order of the results. Thank you!