Смысл в том, чтобы создать два виртуальных столбца «serie_order» (вариант) и «serie» (постоянный), которые вы будете использовать в обеих частях ваших данных (вам придется разделить данные на две части).
SELECT * FROM (
SELECT 1 as serie, message_id AS serie_order , * FROM
(SELECT message_id FROM messages ) as part_up
UNION
SELECT 2 as serie, 101-message_id as serie_order, * FROM
(SELECT message_id FROM messages) as part_down
) AS world
ORDER BY serie_order ASC, serie ASC
LIMIT 100