Mysql
 sql >> Database >  >> RDS >> Mysql

Ordinamento query MySQL con numeri

Devi trasmettere sku_size_part1 in un galleggiante.

Questo rallenterà la tua query, ma funzionerà:

$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");

Ciò rallenterà la query, perché MySQL non sarà in grado di utilizzare un indice per eseguire l'ordinamento, l'utilizzo di una funzione lo impedisce.

Una soluzione migliore (se possibile) sarebbe ridefinire sku-size_part1 come decimale(10,2).

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

(Assicurati che il primo parametro (10) e il secondo parametro (2) siano sufficientemente grandi da contenere tutti i valori possibili.)
Vedi:http://dev.mysql .com/doc/refman/5.0/en/cast-functions.html