MySQL में ORDER BY ... DESC और LIMIT का उपयोग करके उच्चतम मान वाले शीर्ष N रिकॉर्ड प्राप्त किए जा सकते हैं।
सिंटैक्स
SELECT * FROM table_name
ORDER BY column_name DESC
LIMIT N;
उदाहरण
छात्र स्कोर तालिका:
mysql> CREATE TABLE DemoTable (
-> StudentName VARCHAR(20), StudentScore INT
-> );
mysql> INSERT INTO DemoTable VALUES
-> ('Adam', 65), ('Chris', 89), ('Bob', 58),
-> ('Sam', 98), ('Mike', 87), ('Carol', 79);
डेटा
+-------------+--------------+
| StudentName | StudentScore |
+-------------+--------------+
| Adam | 65 |
| Chris | 89 |
| Bob | 58 |
| Sam | 98 |
| Mike | 87 |
| Carol | 79 |
+-------------+--------------+
शीर्ष 3 स्कोर
mysql> SELECT * FROM DemoTable
-> ORDER BY StudentScore DESC
->> LIMIT 3;
परिणाम
+-------------+--------------+
| StudentName | StudentScore |
+-------------+--------------+
| Sam | 98 |
| Chris | 89 |
| Mike | 87 |
+-------------+--------------+
विविधताएं
LIMIT 3 OFFSET 0- पहला पृष्ठ (डिफ़ॉल्ट)LIMIT 3 OFFSET 3- दूसरा पृष्ठ (4-6 रैंक)ORDER BY StudentScore DESC, StudentName ASC- टाई-ब्रेकर
टाई हैंडलिंग
यदि 3rd स्थान पर टाई है, तो LIMIT 3 मनमाने ढंग से एक चुनता है। सभी टाई प्राप्त करने के लिए:
SELECT * FROM DemoTable
WHERE StudentScore >= (
SELECT StudentScore FROM DemoTable
ORDER BY StudentScore DESC LIMIT 1 OFFSET 2
);
प्रदर्शन
StudentScoreपर इंडेक्स क्वेरी को तेज़ करता हैLIMITके साथ MySQL जल्दी रुक सकता है (ऑप्टिमाइज़ेशन)