Como a outra resposta menciona:a consulta que você postou não tem nada sobre a ordem em que você deseja seus resultados, apenas quais resultados você deseja obter.
Para ordenar seus resultados, eu usaria ORDER BY FIELD():
SELECT * FROM foo f where f.id IN (2, 3, 1)
ORDER BY FIELD(f.id, 2, 3, 1);
A lista de argumentos para FIELD pode ter comprimento variável.