MySQL में ORDER BY CASE: कस्टम सॉर्टिंग क्रम परिभाषित करना
जब आपको डिफॉल्ट सॉर्टिंग (आरोही/अवरोही) के अलावा एक विशिष्ट क्रम में परिणाम चाहिए, तो ORDER BY CASE का उपयोग करें।
उदाहरण: रंगों को कस्टम क्रम में सॉर्ट करें
टेबल बनाएं:
CREATE TABLE DemoTable (
Color VARCHAR(100)
);
INSERT INTO DemoTable VALUES ('Red'), ('Green'), ('Blue'), ('Yellow');
डेटा:
+--------+ | Color | +--------+ | Red | | Green | | Blue | | Yellow | +--------+
कस्टम क्रम: Blue → Green → Yellow → Red
SELECT * FROM DemoTable
ORDER BY CASE Color
WHEN 'Blue' THEN 10
WHEN 'Green' THEN 20
WHEN 'Yellow' THEN 30
ELSE 100
END;
परिणाम:
+--------+ | Color | +--------+ | Blue | | Green | | Yellow | | Red | +--------+
यह कैसे काम करता है?
CASEप्रत्येक रंग को एक संख्यात्मक मान देता हैORDER BYउन संख्यात्मक मानों के आधार पर सॉर्ट करता हैELSE 100— सूचीबद्ध न किए गए मानों को अंत में रखता है
वैकल्पिक सिंटैक्स: खोजा गया CASE
ORDER BY CASE
WHEN Color = 'Blue' THEN 1
WHEN Color = 'Green' THEN 2
WHEN Color = 'Yellow' THEN 3
ELSE 4
END
व्यावहारिक उपयोग केस
- ऑर्डर स्टेटस: 'Pending' → 'Processing' → 'Shipped' → 'Delivered' → 'Cancelled'
- प्राथमिकता: 'High' → 'Medium' → 'Low'
- दिन: 'Monday' → 'Tuesday' → ... → 'Sunday'
टिप: संख्याएं क्रमिक हों तो बेहतर (1, 2, 3...) — अंतराल (10, 20, 30) भविष्य में मान जोड़ने के लिए जगह छोड़ते हैं।