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

MySQL-forespørgselssortering med tal

Du skal caste sku_size_part1 ind i en flyder.

Dette vil bremse din forespørgsel, men det vil virke:

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

Dette vil bremse forespørgslen, fordi MySQL ikke vil være i stand til at bruge et indeks til at udføre sorteringen, ved at bruge en funktion forhindrer det.

En bedre løsning (hvis muligt) ville være at omdefinere sku-size_part1 som en decimal(10,2).

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

(Sørg for, at den første parameter (10) og den anden parameter (2) er store nok til at indeholde alle mulige værdier.)
Se:http://dev.mysql .com/doc/refman/5.0/da/cast-functions.html




  1. localhost vs. 127.0.0.1 i mysql_connect()

  2. Konvertering af SQL2008 RDL-fil til SQL2005

  3. Hvordan trækker man data fra mysql-databasen og visualiserer med D3.JS?

  4. Konvertering af tal til ord i MYSQL-resultat! Brug af Query