Сортировка запросов MySQL с номерами

У меня есть следующий запрос:

$result = $mysqli->query('SELECT DISTINCT SKU_SIZE_PART1 FROM SKU_DATA WHERE SKU_BRANDNAME = "'.$brand.'" ORDER BY SKU_SIZE_PART1 DESC'); while( $row = $result->fetch_assoc()){ $sku_size1 = $row['SKU_SIZE_PART1']; echo $sku_size1; } 

В основном, что происходит … порядок все испорчен. Вот что получается:

 9.50, 8.75, 8.00, 7.50, 7.00, 37, 35, 33, 325, 32, 315, 31, 305, 30, 295 

325 должно появиться первым, затем 315, затем и так далее.

Что я могу сделать, чтобы это произошло?

Вам нужно бросить sku_size_part1 в поплавок.

Это замедлит ваш запрос, но он будет работать:

 $brand = mysqli_real_escape_string($brand); $result = $mysqli->query("SELECT DISTINCT sku_size_part1 FROM sku_data WHERE sku_brandname = '$brand' ORDER BY CAST(sku_size_part1 AS FLOAT) DESC"); 

Это замедлит запрос вниз, потому что MySQL не сможет использовать индекс для сортировки, используя функцию, которая предотвращает это.

Лучшим решением (если возможно) было бы переопределить sku-size_part1 как десятичную (10,2).

 -- Make a backup first -- ALTER TABLE sku_data CHANGE sku_size_part1 DECIMAL(10,2); 

(Убедитесь, что первый параметр (10) и второй параметр (2) достаточно велики, чтобы удерживать все возможные значения.)
См. http://dev.mysql.com/doc/refman/5.0/ru/cast-functions.html.