मान लीजिए कि आप इस सरणी-सरणियों को पहले तत्व द्वारा क्रमबद्ध करने का प्रयास करते हैं:
[
[ 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)
# --------------------------------------------------------------^^
यह आपको एक अच्छी तरह से परिभाषित और अद्वितीय आदेश देगा।