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

Rails:.limit(5)を呼び出すと、結果の順序が変わります

    この配列の配列を最初の要素で並べ替えようとしたとします。

    [
      [ 1, 1 ],
      [ 1, 2 ],
      [ 1, 3 ]
    ]
    

    ソートキーが重複しているため、これらの両方(および他のいくつか)は有効な結果です:

    [ [1,1], [1,2], [1,3] ]
    [ [1,3], [1,1], [1,2] ]
    

    データベース内で同じ問題が発生しています。あなたはそれを言います:

    したがって、これらの5つの値は任意の順序で表示でき、指定したORDERBY条件を満たすことができます。同じクエリを2回実行しても、同じ順序でデータベースから取得する必要はありません。

    一貫した順序が必要な場合は、結果セットの各行に一意の並べ替えキーがあり、タイが一貫して解除されるようにする必要があります。これはActiveRecordであるため、一意のidがあります 利用できるので、それを使用して注文の結びつきを断ち切ることができます:

    result = Rom::Leaderboard.order('pvp_vs desc, win_percent desc, id').limit(200) 
    # --------------------------------------------------------------^^
    

    これにより、明確で一意の順序が得られます。




    1. SecurityAdvisorMySQLアラートを修正する方法

    2. ストアドプロシージャの作成中にMySQL構文エラーが発生しました

    3. Connector /C++を使用してMySQLの行の値を更新するにはどうすればよいですか

    4. SQL Server 2008 R2 がシングル ユーザー モードでスタックする