MySQL में ORDER BY में एकाधिक कॉलम निर्दिष्ट करके दो कॉलम की प्राथमिकता के आधार पर शीर्ष पंक्ति प्राप्त करें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> Num1 INT,
-> Num2 INT
-> );
Query OK, 0 rows affected (0.61 sec)
mysql> INSERT INTO DemoTable VALUES(60, 249), (59, 250);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+------+------+ | Num1 | Num2 | +------+------+ | 60 | 249 | | 59 | 250 | +------+------+ 2 rows in set (0.00 sec)
Num2 अवरोही, फिर Num1 अवरोही क्रम में शीर्ष 1 पंक्ति
mysql> SELECT * FROM DemoTable ORDER BY Num2 DESC, Num1 DESC LIMIT 1;
आउटपुट
+------+------+ | Num1 | Num2 | +------+------+ | 59 | 250 | +------+------+ 1 row in set (0.00 sec)
व्याख्या:
- पहले
Num2 DESCद्वारा क्रमबद्ध: 250 (पंक्ति 2) पहले, 249 (पंक्ति 1) बाद में - टाई होने पर
Num1 DESCद्वारा क्रमबद्ध LIMIT 1- केवल पहली पंक्ति
परिणाम: पंक्ति 2 (Num2=250) चुनी गई क्योंकि इसका Num2 अधिक है, भले ही इसका Num1 (59) पंक्ति 1 के Num1 (60) से कम है।
सामान्य पैटर्न - प्राथमिकता क्रम:
ORDER BY Priority1 DESC, Priority2 DESC, Priority3 ASC, ... LIMIT 1
यह "सबसे अच्छा" रिकॉर्ड चुनने का सामान्य पैटर्न है जहां कई मानदंड हैं (जैसे: उच्चतम स्कोर, फिर न्यूनतम समय, फिर सबसे पुराना ID)।
नोट: मूल सामग्री में क्वेरी दो बार दोहराई गई थी; यहां एक बार दी गई है।