Pues la sentencia que utilizas debería darte resultado:
Código PHP:
mysql_query("SELECT * FROM tabla ORDER BY Num ASC",$conexion);
A menos que hayas guardado estos números como texto y que mysql los interpreta no en un
orden natural como el que nosotros conocemos comunmente sino que te los pone en un
orden lexicográfico, este se interpreta como ya te habras dado cuenta en un orden no tan común, por ejemplo el "2" es mayor que la cadena "12" porque 2 viene después de 1 (
12). Es algo así como ordenar por la primera letra del abecedario.
Para saber más del orden natural, checa este enlace
http://www.naturalordersort.org/
Haz lo que ya te comentaron de cambiar tu tabla y si no lo quieres hacer, probablemente deberías de colocarles a estos números ceros a la izquierda y así solucionarías tu problema. Un ejemplo:
Código PHP:
<?php
$numero = array( 10, 12, 2, 9, 90 ); // suponiendo que este es tu array de numeros
foreach ( $numero as $num )
{
$num = sprintf ( "%010d", $num ); // agregamos ceros a la izquierda
$numeros[] = $num; // los guardamos en un nuevo array
}
echo "<p>";
sort ( $numeros ); // ardenamos en forma ascendente
foreach ( $numeros as $nume )
{
echo $nume."<br/>";
}
?>
Como verás el secreto esta en la función sort()
deberías de probar primero pasarle esta funcion a tu array directamente y si no te funciona poner los ceros a la izquierda como te comente.
Código PHP:
<?php
$numero = array( 10, 12, 2, 9, 90 ); // suponiendo que este es tu array de numeros
sort ( $numero );
foreach ( $numero as $nume )
{
echo $nume."<br/>";
}
?>
Espero haberme dado a entender y que mi aporte te sirva de algo. Suerte