Вам может потребоваться дополнительный столбец в исходном запросе, который вы GROUP BY, наряду с тем, по чему вы в данный момент группируете. Этот столбец, когда он сгруппирован, может быть использован для последующего заказа. Например:
SELECT
SUM(IF(`languages`.`id` = 3, 1, 0)) AS languageOrder,
`pages`.`id`,
`contents`.`id_language`,
[...]
[...]
[GROUP BY...]
ORDER BY languageOrder DESC
Я хотел бы, чтобы languageOrder был положительным для групп, которые содержат язык # 3, 0 в противном случае. Таким образом, группы, содержащие язык 3, будут наверху.