Como menciona la otra respuesta:la consulta que publicaste no tiene nada sobre el orden en el que te gustaría obtener los resultados, solo qué resultados te gustaría obtener.
Para ordenar sus resultados, usaría ORDER BY FIELD():
SELECT * FROM foo f where f.id IN (2, 3, 1)
ORDER BY FIELD(f.id, 2, 3, 1);
La lista de argumentos de FIELD puede tener una longitud variable.