MySQL में ORDER BY के साथ CASE स्टेटमेंट का उपयोग करके दो कॉलम के आधार पर कस्टम क्रमबद्धीकरण (custom sorting) किया जा सकता है।
उदाहरण परिदृश्य
पहले अंकों (Marks) के अनुसार क्रमबद्ध करें, समान अंकों के लिए 'Carol' को 'John' से पहले रखें।
तालिका और डेटा
mysql> CREATE TABLE DemoTable (Marks INT, Name VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES
-> (85, 'John'), (78, 'Carol'), (78, 'John'), (85, 'Carol');
डेटा
+-------+-------+
| Marks | Name |
+-------+-------+
| 85 | John |
| 78 | Carol |
| 78 | John |
| 85 | Carol |
+-------+-------+
कस्टम सॉर्ट क्वेरी
mysql> SELECT * FROM DemoTable
-> ORDER BY Marks,
-> CASE WHEN Name = 'Carol' THEN 1 ELSE 0 END;
परिणाम
+-------+-------+
| Marks | Name |
+-------+-------+
| 78 | John |
| 78 | Carol |
| 85 | John |
| 85 | Carol |
+-------+-------+
व्याख्या
- पहले
Marksद्वारा ASC (डिफ़ॉल्ट): 78, 78, 85, 85 - समान Marks (78) के लिए: Carol=1, John=0 → DESC से Carol पहले
- समान Marks (85) के लिए: Carol=1, John=0 → Carol पहले
सामान्य CASE सॉर्टिंग पैटर्न
ORDER BY
CASE
WHEN priority = 'high' THEN 1
WHEN priority = 'medium' THEN 2
WHEN priority = 'low' THEN 3
ELSE 4
END,
created_date;
मुख्य बिंदु
CASEकस्टम प्राथमिकता मान निर्दिष्ट करता है- संख्यात्मक मानों का उपयोग क्रम नियंत्रित करता है (कम = पहले)
- एकाधिक
CASEया जटिल तर्क संभव - द्वितीयक क्रम के लिए अतिरिक्त कॉलम जोड़ें