MySQL में CASE स्टेटमेंट का उपयोग करके कस्टम क्रम में ORDER BY करना
जब आपको किसी कॉलम को अपनी कस्टम प्राथमिकता के अनुसार क्रमबद्ध करना हो, तो CASE स्टेटमेंट का उपयोग करके ORDER BY क्लॉज में कस्टम सॉर्टिंग लागू कर सकते हैं।
उदाहरण के साथ पूर्ण कार्यान्वयन
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (StudentId VARCHAR(100));
रिकॉर्ड डालना
mysql> INSERT INTO DemoTable VALUES('STU-980'), ('STU-1029'), ('STU-189'), ('STU-890');
सभी रिकॉर्ड प्रदर्शित करना (डिफ़ॉल्ट क्रम)
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+
| StudentId |
+-----------+
| STU-980 |
| STU-1029 |
| STU-189 |
| STU-890 |
+-----------+
4 rows in set (0.00 sec)
CASE स्टेटमेंट के साथ कस्टम ORDER BY
mysql> SELECT * FROM DemoTable
ORDER BY CASE
WHEN StudentId = 'STU-890' THEN 1
WHEN StudentId = 'STU-1029' THEN 2
WHEN StudentId = 'STU-980' THEN 3
WHEN StudentId = 'STU-189' THEN 4
END;
आउटपुट:
+-----------+
| StudentId |
+-----------+
| STU-890 |
| STU-1029 |
| STU-980 |
| STU-189 |
+-----------+
4 rows in set (0.08 sec)
व्याख्या:
- प्रत्येक
WHENक्लॉज एक विशिष्ट मान की जांच करता है THENके बाद का नंबर सॉर्ट प्राथमिकता निर्धारित करता है (कम नंबर = उच्च प्राथमिकता)- परिणाम निर्दिष्ट क्रम में आते हैं: STU-890 → STU-1029 → STU-980 → STU-189
विकल्प: FIELD() फ़ंक्शन
MySQL का FIELD() फ़ंक्शन इसे सरल बनाता है:
mysql> SELECT * FROM DemoTable
ORDER BY FIELD(StudentId, 'STU-890', 'STU-1029', 'STU-980', 'STU-189');
यह समान परिणाम देता है लेकिन अधिक पठनीय और संक्षिप्त है।