Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में शीर्ष 3 उच्चतम स्कोर चुनें और नाम के अनुसार वर्णानुक्रम में सॉर्ट करें

MySQL में सबक्वेरी और ORDER BY: शीर्ष N रिकॉर्ड फिर द्वितीयक सॉर्ट

जब आपको पहले किसी कॉलम के आधार पर शीर्ष N रिकॉर्ड चुनने हों, फिर किसी अन्य कॉलम के आधार पर सॉर्ट करना हो, तो सबक्वेरी (उप-क्वेरी) का उपयोग करें।

उदाहरण: शीर्ष 3 स्कोर, फिर नाम के अनुसार A-Z

टेबल बनाएं:

CREATE TABLE DemoTable (
    Name VARCHAR(40),
    Score INT
);

INSERT INTO DemoTable VALUES 
('Chris', 45), ('Bob', 98), ('David', 78), ('Mike', 96), ('Carol', 43);

डेटा:

+-------+-------+
| Name  | Score |
+-------+-------+
| Chris | 45    |
| Bob   | 98    |
| David | 78    |
| Mike  | 96    |
| Carol | 43    |
+-------+-------+

क्वेरी: शीर्ष 3 स्कोर, फिर नाम से सॉर्ट

SELECT * FROM (
    SELECT Name, Score 
    FROM DemoTable 
    ORDER BY Score DESC, Name ASC 
    LIMIT 3
) AS tbl 
ORDER BY Name;

परिणाम:

+-------+-------+
| Name  | Score |
+-------+-------+
| Bob   | 98    |
| David | 78    |
| Mike  | 96    |
+-------+-------+

चरण-दर-चरण व्याख्या

  1. आंतरिक क्वेरी: ORDER BY Score DESC, Name ASC LIMIT 3 — पहले स्कोर से अवरोही क्रम, टाई होने पर नाम से आरोही, फिर शीर्ष 3
  2. आंतरिक परिणाम: Bob (98), Mike (96), David (78)
  3. बाहरी क्वेरी: ORDER BY Name — इन 3 को नाम से वर्णानुक्रम में सॉर्ट
  4. अंतिम परिणाम: Bob, David, Mike

महत्वपूर्ण: LIMIT के बिना बाहरी ORDER BY

यदि आप बाहरी क्वेरी में भी LIMIT लगाएंगे, तो गलत परिणाम मिल सकते हैं। यहां केवल सॉर्टिंग के लिए बाहरी क्वेरी है।

MySQL 8.0+ में CTE का उपयोग

WITH Top3 AS (
    SELECT Name, Score 
    FROM DemoTable 
    ORDER BY Score DESC, Name ASC 
    LIMIT 3
)
SELECT * FROM Top3 ORDER BY Name;

यह अधिक पठनीय और आधुनिक दृष्टिकोण है।

  1. - MySQL में संख्याओं के साथ मिश्रित वर्ण कॉलम से वर्ण मान सॉर्ट करें?

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Code varchar(20) -> ); Query OK, 0 rows affected (0.70 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(J23); Query OK, 1 row affected (0.17 sec) mysql> insert into De

  1. - MySQL में SUBSTRING और LOCATE से LIKE मिलान वाला उपस्ट्रिंग निकालकर नया कॉलम बनाएं

    LOCATE() से उपस्ट्रिंग की स्थिति खोजें और SUBSTRING() से निकालकर नया कॉलम बनाएं। टेबल बनाएं mysql> CREATE TABLE DemoTable1872 (Name VARCHAR(50)); डेटा डालें mysql> INSERT INTO DemoTable1872 VALUES(John Doe), (Adam Smith), (Mitchell Johnson); John मिलान निकालें mysql> SELECT Name, SUB

  1. - MySQL में SUBSTRING_INDEX का उपयोग करके हाइफ़न से अलग स्ट्रिंग को कई कॉलम्स में विभाजित करें

    MySQL में SUBSTRING_INDEX का उपयोग करके विभाजक द्वारा स्ट्रिंग पार्सिंग MySQL का SUBSTRING_INDEX() फ़ंक्शन एक स्ट्रिंग को विभाजक द्वारा विभाजित करने और विशिष्ट भाग निकालने के लिए अत्यंत उपयोगी है। यह CSV-शैली डेटा या संयुक्त फ़ील्ड्स को पार्स करने के लिए आदर्श है। टेबल बनाना ); Query OK, 0 rows af