Saturday 15 May 2010

jquery - MySQL row select increments only when results aren't the same -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 2 जवाब

    मैं रैंक करने की कोशिश कर रहा हूँ एक एसक्यूएल से अंक केवल तभी चुनते हैं जब पॉइंट वापस लौटा परिणाम में अन्य बिंदुओं से नहीं जुड़ा हो।

    मैं उपयोग कर रहा हूँ एसक्यूएल क्वेरी:

      SET @rank = 0; SELECT *, @rank: = @ रैंक + 1 रैंक रैंक से अंक;   

    काफी सरल! और यह निम्न परिणाम प्रदर्शित करता है:

      आईडी | User_id | अंक | रैंक ---------------------------- 2 | 133845 | 220 | 1 3 | 134084 | 220 | 2 4 | 1 | 150 | 3 5 | 134086 | 145 | 4 6 | 134080 | 100 | 5 7 | 17 9 38 | 30 | 6 8 | 83011 | 20 | 7 9 | 26 | 5 | 8 10 | 134077 | 5 | 9 11 | 134074 | 5 | 10   

    जैसा कि आपको आईडी 2 और 3 के समान अंक मिलते हैं और आईडी 9, 10 और 11 भी मिलते हैं। तकनीकी रूप से रैंक उन सभी के लिए समान होना चाहिए, वेतन वृद्धि जारी रखने की तुलना में।

    नीचे दिया गया उदाहरण यह है कि तालिका को कैसे ठीक से दिखना चाहिए:

      id | User_id | अंक | रैंक ---------------------------- 2 | 133845 | 220 | 1 3 | 134084 | 220 | 1 4 | 1 | 150 | 2 5 | 134086 | 145 | 3 6 | 134080 | 100 | 4 7 | 17 9 38 | 30 | 5 8 | 83011 | 20 | 7 9 | 26 | 5 | 8 10 | 134077 | 5 | 8 11 | 134074 | 5 | 8   

    मुझे पता है कि रैंक में लगातार वृद्धि (@ रैंक + 1 का उपयोग करके) प्रति पंक्ति चुनें, यह करने का आदर्श तरीका नहीं है। तो कैसे मैं विशेष रूप से अंकन अलग होने पर केवल वृद्धिशील के बारे में कैसे जाना होगा?

    तो कार्य समाधान समाप्त जा रहा है:

      SET @ रैंक = 0; SET @ curr = 0; SELECT *, @prev: = @curr, @curr: = points.points, @rank: = IF (@prev = @curr, @rank, @ रैंक + 1) अंकों से रैंक;   

    मुझे सही दिशा जॉर्ज में जाने के लिए बहुत धन्यवाद!

No comments:

Post a Comment