Una propuesta es con una consulta UNION ALL, pero que requiere usar limit para mantener las dos ordenaciones:
Código sql:
Ver original(SELECT * FROM tabla WHERE num <= CEIL(variableX/10)*10 ORDER BY num DESC LIMIT 10000)
UNION ALL
(SELECT * FROM tabla WHERE num > CEIL(variableX/10)*10 ORDER BY num ASC LIMIT 10000)
Buscas los num menores o iguales a la conversión a entero superior de una división por 10 y ordenas descendente; luego eso lo unes con la búsqueda de num mayor que eso mismo, pero ordenando ascendente. Tienes que usar un LIMIT. No sé cuántos num distintos tienes, pero con una cifra como esta que te he puesto de 10000 tendrás suficiente. Tal vez haya otro modo de resolver eso, pero esto, creo, funciona como quieres, y se trata de una consulta.