Jak wspomina druga odpowiedź:wysłane zapytanie nie zawiera informacji o kolejności, w jakiej chcesz otrzymać wyniki, a jedynie o tym, jakie wyniki chcesz uzyskać.
Aby uporządkować wyniki, użyję ORDER BY FIELD():
SELECT * FROM foo f where f.id IN (2, 3, 1)
ORDER BY FIELD(f.id, 2, 3, 1);
Lista argumentów pola FIELD może mieć zmienną długość.