एक mysql क्वेरी में परिणाम रैंकिंग करते समय संबंधों को कैसे संभालता है? मैं तालिका नाम और स्तंभ इस उदाहरण में सरल बना दिया है, लेकिन यह मेरी समस्या को वर्णन करना चाहिए:MySQL में परिणाम रैंकिंग करते समय मैं संबंधों को कैसे संभाल सकता हूं?
SET @rank=0;
SELECT student_names.students,
@rank := @rank +1 AS rank,
scores.grades
FROM student_names
LEFT JOIN scores ON student_names.students = scores.students
ORDER BY scores.grades DESC
तो कल्पना से ऊपर क्वेरी का उत्पादन:
Students Rank Grades
=======================
Al 1 90
Amy 2 90
George 3 78
Bob 4 73
Mary 5 NULL
William 6 NULL
हालांकि अल और एमी एक ही है ग्रेड, एक दूसरे से अधिक रैंक किया गया है। एमी फट गया मैं इसे कैसे बना सकता हूं ताकि एमी और अल की रैंकिंग समान हो, ताकि दोनों के पास 1 रैंक हो। इसके अलावा, विलियम और मैरी ने टेस्ट नहीं लिया। उन्होंने कक्षा हासिल की और लड़के के कमरे में धूम्रपान कर रहे थे। उन्हें अंतिम स्थान के लिए बंधना चाहिए।
सही रैंकिंग होना चाहिए:
Students Rank Grades
========================
Al 1 90
Amy 1 90
George 2 78
Bob 3 73
Mary 4 NULL
William 4 NULL
अगर कोई किसी भी सलाह है, तो कृपया मुझे बताएं।
हाय ओएमजी टट्टू, आप MySQL टर्मिनेटर हैं !! बहुत बढ़िया, मदद के लिए बहुत बहुत धन्यवाद। मैंने इसे कभी नहीं सोचा होगा। (मेरा एसक्यूएल ज्ञान बुनियादी है, इसलिए इसे बेहतर समझने के लिए मुझे आपके उत्तर का अध्ययन करना होगा)। इसके अलावा, मुझे आपकी स्क्रीन का नाम पसंद है। फिर, धन्यवाद !!! -Laxmidi – Laxmidi
"आप एक अलग एसईटी कथन का उपयोग किए बिना एक चर घोषित करने और उपयोग करने के लिए एक क्रॉस जॉइन (MySQL में, किसी भी मानदंड के बिना जॉइन जॉइन में) का उपयोग कर सकते हैं।" अरे, मुझे नहीं पता था कि आप ऐसा कर सकते हैं। +1 – heisenberg
अगर मैं कर सकता तो मैं इसे फिर से वोट दूंगा। बहुत शानदार। – duffymo