Misalkan Anda mencoba mengurutkan array-of-array ini dengan elemen pertama:
[
[ 1, 1 ],
[ 1, 2 ],
[ 1, 3 ]
]
Keduanya (dan beberapa lainnya) adalah hasil yang valid karena Anda memiliki kunci pengurutan duplikat:
[ [1,1], [1,2], [1,3] ]
[ [1,3], [1,1], [1,2] ]
Anda mengalami masalah yang sama di dalam database. Anda mengatakan bahwa:
Jadi kelima nilai tersebut dapat muncul dalam urutan apa pun dan tetap memenuhi ketentuan ORDER BY yang Anda tentukan. Mereka bahkan tidak harus keluar dari database dalam urutan yang sama dalam dua eksekusi kueri yang sama.
Jika Anda ingin pengurutan yang konsisten, Anda perlu memastikan bahwa setiap baris dalam kumpulan hasil Anda memiliki kunci pengurutan yang unik sehingga ikatan akan terputus secara konsisten. Ini adalah ActiveRecord sehingga Anda akan memiliki id
yang unik tersedia sehingga Anda dapat menggunakannya untuk memutuskan ikatan pemesanan Anda:
result = Rom::Leaderboard.order('pvp_vs desc, win_percent desc, id').limit(200)
# --------------------------------------------------------------^^
Itu akan memberi Anda urutan yang jelas dan unik.