PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

रेल:कॉलिंग .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. कैसे बताएं कि पोस्टग्रेज टेबल कब क्लस्टर किया गया था और किस इंडेक्स का इस्तेमाल किया गया था

  2. एसक्यूएल ऐरे से स्ट्रिंग्स के ऐरे में परिणाम सेट को कनवर्ट करें

  3. pglogic प्रतिकृति तालिका पर ट्रिगर से सूचित करें

  4. पोस्टग्रेएसक्यूएल त्रुटि में WHERE क्लॉज में एग्रीगेट्स की अनुमति नहीं है

  5. रेल और पोस्टग्रेएसक्यूएल में समय क्षेत्र को पूरी तरह से अनदेखा करना