Załóżmy, że próbujesz uporządkować tę tablicę tablic według pierwszego elementu:
[
[ 1, 1 ],
[ 1, 2 ],
[ 1, 3 ]
]
Oba te (i kilka innych) są prawidłowymi wynikami, ponieważ masz zduplikowane klucze sortowania:
[ [1,1], [1,2], [1,3] ]
[ [1,3], [1,1], [1,2] ]
Ten sam problem występuje w bazie danych. Mówisz, że:
Tak więc te pięć wartości może pojawić się w dowolnej kolejności i nadal spełniać określony warunek ORDER BY. Nie muszą nawet wychodzić z bazy danych w tej samej kolejności w dwóch wykonaniach tego samego zapytania.
Jeśli chcesz spójnego porządkowania, musisz upewnić się, że każdy wiersz w zestawie wyników ma unikalny klucz sortowania, aby powiązania były konsekwentnie łamane. To jest ActiveRecord, więc będziesz mieć unikalny id
dostępne, dzięki czemu możesz użyć tego do zerwania więzi z zamówieniami:
result = Rom::Leaderboard.order('pvp_vs desc, win_percent desc, id').limit(200)
# --------------------------------------------------------------^^
To da ci dobrze zdefiniowaną i niepowtarzalną kolejność.