Vous pouvez le faire en utilisant FIND_IN_SET , par exemple
SELECT * FROM T WHERE T.id IN(4,78,12,45)
ORDER BY FIND_IN_SET(T.id,'4,78,12,45');
Bien que vous deviez dupliquer la liste, si vous générez la requête dans le code, ce n'est pas un gros problème.