Необходимо понять, каким образом задаются эти самые N объектов.
Если о характере выборки ID для этих объектов ничего нельзя сказать, то на вопрос 1 кроме предложенного варианта с подзапросом вряд ли что-то можно придумать.
Если я правильно понимаю задачу, результат первого вопроса будет выглядеть примерно так:
select *
from `table`
where id in (
<подзапрос или список для выбора id>
)
order by
case when lang = 1 then 1
when lang = 2 then 2
else 3
end asc
А вот по поводу второго… Если есть подобного рода запросы, может быть, оптимальнее разбивать не по id, а по языкам?