Come menziona l'altra risposta:la query che hai pubblicato non ha nulla sull'ordine in cui desideri ottenere i risultati, solo su quali risultati vorresti ottenere.
Per ordinare i tuoi risultati, userei ORDER BY FIELD():
SELECT * FROM foo f where f.id IN (2, 3, 1)
ORDER BY FIELD(f.id, 2, 3, 1);
L'elenco degli argomenti in FIELD può essere di lunghezza variabile.