sql >> Databáze >  >> RDS >> Mysql

Třídění dotazů MySQL s čísly

Musíte odeslat sku_size_part1 do plováku.

To zpomalí váš dotaz, ale bude to fungovat:

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

To zpomalí dotaz, protože MySQL nebude moci použít index k řazení, použití funkce tomu zabrání.

Lepší řešení (pokud je to možné) by bylo předefinovat sku-size_part1 jako desetinné číslo (10,2).

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

(Ujistěte se, že první parametr (10) a druhý parametr (2) jsou dostatečně velké, aby obsahovaly všechny možné hodnoty.)
Viz:http://dev.mysql .com/doc/refman/5.0/en/cast-functions.html




  1. Server MySQL odešel s Ruby on Rails

  2. Výkonnostní důsledky plánování událostí MySQL

  3. Vyberte číslo řádku v postgresu

  4. Seskupit podle ID s max(date_field)