Mysql
 sql >> Base de données >  >> RDS >> Mysql

Tri des requêtes MySQL avec des nombres

Vous devez caster sku_size_part1 dans un flotteur.

Cela ralentira votre requête, mais cela fonctionnera :

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

Cela ralentira la requête, car MySQL ne pourra pas utiliser d'index pour effectuer le tri, l'utilisation d'une fonction l'empêche.

Une meilleure solution (si possible) serait de redéfinir sku-size_part1 sous forme décimale (10,2).

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

(Assurez-vous que le premier paramètre (10) et le deuxième paramètre (2) sont suffisamment grands pour contenir toutes les valeurs possibles.)
Voir :http://dev.mysql .com/doc/refman/5.0/en/cast-functions.html