Вы можете использовать UNION
, как я изначально предложил, с сортировкой по обоим столбцам, как предложено @Mike в комментариях.
(SELECT *, 1 single_id FROM table_name WHERE id = 5)
UNION ALL
(SELECT *, 2 all_ids FROM table_name WHERE id <> 5)
ORDER BY single_id, id
Или лучше с оператором IF
, чтобы избежать накладных расходов двух видов:
SELECT *, IF(id = 5, -1, id) ordering
FROM table_name
ORDER BY ordering ASC