sql >> データベース >  >> RDS >> Mysql

数値を使用したMySQLクエリの並べ替え

    sku_size_part1をキャストする必要があります フロートに。

    これによりクエリの速度は低下しますが、機能します:

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

    MySQLはインデックスを使用して並べ替えを行うことができないため、これによりクエリの速度が低下します。関数を使用すると、それが防止されます。

    より良い解決策(可能であれば) sku-size_part1を再定義することです 10進数(10,2)として。

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

    (最初のパラメーター(10)と2番目のパラメーター(2)が、すべての可能な値を保持するのに十分な大きさであることを確認してください。)
    参照: http://dev.mysql .com / doc / refman / 5.0 / en / cast-functions.html




    1. 'SET external_key_checks =0'のスコープは何ですか?

    2. MySQL Insert Into Select

    3. SQLServerでのデータ圧縮の節約を見積もる

    4. PostgreSQLのメモリ使用率が高いかどうかを確認する方法