मैं एसक्यूएल के लिए नया हूं और मैंने कभी भी mysql में चर या शर्तों का उपयोग नहीं किया है, लेकिन अन्य प्रोग्रामिंग भाषाओं से यह पता है। कुछ दिनों से मैं उपयोगकर्ता स्कोर रैंक करने का एक तरीका खोजने का प्रयास करता हूं। मैंने बहुत से लेख पढ़े, और स्टैक ओवरफ्लो पर पूछे जाने वाले प्रश्न भी और अंततः मुझे एक समाधान मिला जो लगभग मुझे पसंद है।संबंधों के साथ MySQL रैंक
SELECT
score_users.uid,
score_users.score,
@prev := @curr,
@curr := score,
@rank := IF(@prev = @curr, @rank, @rank +1) AS rank
FROM
score_users,
(SELECT @curr := null, @prev := null, @rank := 0) tmp_tbl
WHERE
score_users.matchday = 1
ORDER BY
score_users.score DESC
लेकिन मेरी समस्याएं टाई स्कोर हैं। मैं इस तरह लगातार रैंक प्राप्त करने के लिए, नहीं करना चाहती:
+------------+------+--------+
| uid | name | rank | score |
+------------+------+--------+
| 4 | Jon | 1 | 20 |
| 1 | Jane | 2 | 19 |
| 2 | Fred | 2 | 19 |
| 9 | July | 3 | 18 |
| 7 | Mary | 4 | 17 |
| 3 | Toni | 5 | 12 |
| 5 | Steve | 5 | 12 |
| 6 | Peter | 6 | 11 |
| 8 | Nina | 7 | 10 |
+------------+------+--------+
मैं इस तरह एक परिणाम प्राप्त करना चाहते हैं:,
+------------+------+--------+
| uid | name | rank | score |
+------------+------+--------+
| 4 | Jon | 1 | 20 |
| 1 | Jane | 2 | 19 |
| 2 | Fred | 2 | 19 |
| 9 | July | 4 | 18 |
| 7 | Mary | 5 | 17 |
| 3 | Toni | 6 | 12 |
| 5 | Steve | 6 | 12 |
| 6 | Peter | 8 | 11 |
| 8 | Nina | 9 | 10 |
+------------+------+--------+
मुझे लगता है मैं एक नया अस्थायी तालिका बनाने के लिए है और कुछ अगर हालात, लेकिन मुझे कोई समाधान नहीं मिला और वह बेताब हो गया! इसके अलावा, मुझे प्रदर्शन पर नजर रखना है, शायद स्कोर पर रैंक पाने के बेहतर तरीके हैं जैसा मैंने किया था? मैं संकेत या कुछ कोड स्निपेट के लिए बहुत आभारी होंगे।
मैं एसक्यूएल के बाहर रैंक उत्पन्न होता है क्योंकि यह आसान है जो कुछ भी कार्यक्रम आप उपयोग कर रहे (स्कोर से रैंकिंग पर्याप्त है) के साथ क्या करना के बाद। आप जो कर रहे हैं वह करना MySQL में जटिल है! – serakfalcon