Припаркую свой велик.
Из in нельзя вытащить сведения о порядке, он просто дает ответ "включает" или "не включает" в себя значение.
Если СУБД позволяет, то для сеанса создаете временную таблицу, где добавляете все необходимые атрибуты (в данном случае порядок записей), и пользуетесь ей. Если не позволяет, то всегда можно написать подзапрос и он тоже будет работать почти как временная таблица:
SELECT *
FROM table
join (select 1 id, 7 val union
select 2, 8 union
select 3, 5 union
select 4, 4 union
select 5, 1) tmp on table.id = tmp.val
order by tmp.id