sql >> Database >  >> RDS >> Mysql

MySQL-query's sorteren met getallen

Je moet sku_size_part1 . casten in een vlotter.

Dit vertraagt ​​uw zoekopdracht, maar het zal werken:

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

Dit zal de query vertragen, omdat MySQL geen index kan gebruiken om te sorteren, het gebruik van een functie voorkomt dat.

Een betere oplossing (indien mogelijk) zou zijn om sku-size_part1 . opnieuw te definiëren als een decimaal (10,2).

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

(Zorg ervoor dat de eerste parameter (10) en de tweede parameter (2) groot genoeg zijn om alle mogelijke waarden te bevatten.)
Zie:http://dev.mysql .com/doc/refman/5.0/en/cast-functions.html




  1. Meerdere PostgreSQL-instanties op één host uitvoeren

  2. Update indien aanwezig, invoegen indien niet aanwezig

  3. Een regeleinde invoegen in een SQL Server VARCHAR/NVARCHAR-tekenreeks

  4. Gegevensmodel voor huwelijksorganisatie