PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Rails:Извикването на .limit(5) променя реда на резултатите

Да предположим, че се опитате да подредите този масив от масиви по първия елемент:

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

И двата (и няколко други) са валидни резултати, защото имате дублирани ключове за сортиране:

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

Срещате същия проблем в базата данни. Вие казвате това:

Така че тези пет стойности могат да се появят в произволен ред и все още да отговарят на зададеното от вас условие ORDER BY. Те дори не трябва да излизат от базата данни в същия ред при две изпълнения на една и съща заявка.

Ако искате последователно подреждане, трябва да сте сигурни, че всеки ред във вашия набор от резултати има уникален ключ за сортиране, така че връзките да бъдат прекъсвани последователно. Това е ActiveRecord, така че ще имате уникален id наличен, така че можете да го използвате, за да прекъснете връзките си с поръчки:

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

Това ще ви даде добре дефиниран и уникален ред.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблеми при настройката на персонализиран първичен ключ при миграция на Rails 4

  2. Как да свържете контейнера за уеб приложения на Docker към контейнера на Docker PostgreSQL?

  3. PostgreSQL - Писане на динамичен sql в съхранена процедура, която връща набор от резултати

  4. PostgreSQL как да видите кои заявки са изпълнени

  5. Класът не е намерен, зарежда JDBC org.postgresql.Driver