PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Railsy:wywołanie .limit(5) zmienia kolejność wyników

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ść.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak naprawić OperationalError:(psycopg2.OperationalError) serwer niespodziewanie zamknął połączenie

  2. PostgreSQL - Usuwanie danych starszych niż godzina, a następnie wstawianie nowych danych do tej samej tabeli

  3. PostgreSql WSTAW Z WYBRANEGO ID POWRACAJĄCEGO

  4. Django cache.set() powodujący błąd zduplikowanego klucza

  5. Agent PostgreSQL ponownie w komisji SQL Standard