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

MySQL:एक विजेता का चयन करें, उनकी रैंक लौटाते हुए

मुझे लगता है कि इससे आपको वांछित परिणाम मिलेगा। ध्यान दें कि मैं उन मामलों को ठीक से संभालता हूं जहां लक्षित विजेता दूसरे विजेता के साथ अंक के लिए बंधे होते हैं। (दोनों को एक ही पद मिलता है)।

SELECT COUNT(*) + 1 AS Position
FROM myTable
WHERE Points > (SELECT Points FROM myTable WHERE Winner = 'Sally')

संपादित करें :
मैं "प्लग" करना चाहूंगा इग्नासियो वाज़क्वेज़-एब्राम्स ' उत्तर दें, जो कई मायनों में, उपरोक्त से बेहतर है।
उदाहरण के लिए, यह सभी (या कई) विजेताओं और उनकी वर्तमान स्थिति को सूचीबद्ध करने की अनुमति देता है।
एक और लाभ यह है कि यह अधिक जटिल स्थिति को व्यक्त करने की अनुमति देता है। यह इंगित करने के लिए कि एक दिया गया खिलाड़ी दूसरे से आगे है (नीचे देखें)। पढ़ना अविश्वसनीय इस आशय की टिप्पणी कि "संबंध" नहीं होंगे, ने मुझे इस पर गौर करने के लिए प्रेरित किया; स्थिति को संभालने के लिए क्वेरी को थोड़ा संशोधित किया जा सकता है जब खिलाड़ियों के पास समान अंक होते हैं (ऐसे खिलाड़ियों को पहले समान स्थिति मान दिया जाता था, अब स्थिति मान उनके सापेक्ष प्रारंभ मानों से जुड़ा हुआ है)।

SELECT w1.name, (
  SELECT COUNT(*)
  FROM winners AS w2
  WHERE (w2.points > w1.points) 
     OR (W2.points = W1.points AND W2.Start < W1.Start)  -- Extra cond. to avoid ties.
)+1 AS rank
FROM winners AS w1
-- WHERE W1.name = 'Sally'   -- optional where clause


  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. आपके SQL सिंटैक्स में त्रुटि .. 'कुंजी' के पास

  3. ड्रूपल व्यू मॉड्यूल mysql त्रुटि

  4. डेटाग्रिडव्यू के पंक्ति मान कैसे प्राप्त करें और उसी पंक्ति में एक बटन का उपयोग करके इसे किसी अन्य रूप में पास करें

  5. MySql रेगेक्स एक्सप्रेशन टेस्ट