PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Rails:Gọi .limit (5) thay đổi thứ tự kết quả

Giả sử bạn cố gắng sắp xếp mảng-mảng này theo phần tử đầu tiên:

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

Cả hai điều này (và một số kết quả khác) đều là kết quả hợp lệ vì bạn có các khóa sắp xếp trùng lặp:

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

Bạn đang gặp phải vấn đề tương tự bên trong cơ sở dữ liệu. Bạn nói rằng:

Vì vậy, năm giá trị đó có thể xuất hiện theo bất kỳ thứ tự nào và vẫn đáp ứng điều kiện ORDER BY đã chỉ định của bạn. Họ thậm chí không phải ra khỏi cơ sở dữ liệu theo thứ tự giống nhau trong hai lần thực thi cùng một truy vấn.

Nếu bạn muốn thứ tự nhất quán, bạn cần đảm bảo rằng mỗi hàng trong tập kết quả của bạn có một khóa sắp xếp duy nhất để các mối quan hệ sẽ bị phá vỡ một cách nhất quán. Đây là ActiveRecord nên bạn sẽ có một id duy nhất có sẵn để bạn có thể sử dụng nó để phá vỡ mối quan hệ đặt hàng của bạn:

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

Điều đó sẽ cung cấp cho bạn một thứ tự xác định rõ ràng và duy nhất.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển id người dùng đến trình kích hoạt PostgreSQL

  2. lỗi MAC SSL ghi sai giữa Java và PortgreSQL

  3. Tạo dữ liệu và chất lượng phần cứng

  4. Postgres - Chuyển đổi danh sách kề thành đối tượng JSON lồng nhau

  5. Mã hóa postgresql base64