Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sortieren von MySQL-Abfragen mit Zahlen

Sie müssen sku_size_part1 umwandeln in einen Schwimmer.

Dies wird Ihre Abfrage verlangsamen, aber es wird funktionieren:

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

Dies verlangsamt die Abfrage, da MySQL keinen Index zum Sortieren verwenden kann, die Verwendung einer Funktion verhindert dies.

Eine bessere Lösung (wenn möglich) wäre, sku-size_part1 neu zu definieren als Dezimalzahl (10,2).

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

(Stellen Sie sicher, dass der erste Parameter (10) und der zweite Parameter (2) groß genug sind, um alle möglichen Werte aufzunehmen.)
Siehe:http://dev.mysql .com/doc/refman/5.0/en/cast-functions.html