MySQL ORDER BY IF(): सशर्त क्रमबद्धता
ORDER BY IF(condition, value_if_true, value_if_false) का उपयोग करके आप किसी शर्त के आधार पर कस्टम सॉर्टिंग क्रम परिभाषित कर सकते हैं।
उदाहरण: 'Sam' को अंत में रखें, बाकी स्कोर से अवरोही
टेबल बनाएं:
CREATE TABLE DemoTable (Name VARCHAR(50), Score INT);
INSERT INTO DemoTable VALUES ('Chris', 98), ('David', 45), ('Bob', 56), ('Sam', 89), ('Carol', 78);
डेटा:
+-------+-------+ | Name | Score | +-------+-------+ | Chris | 98 | | David | 45 | | Bob | 56 | | Sam | 89 | | Carol | 78 | +-------+
क्वेरी: Sam को अंत में, बाकी Score DESC
SELECT * FROM DemoTable ORDER BY IF(Name = 'Sam', 1, 0) ASC, Score DESC;
परिणाम:
+-------+-------+ | Name | Score | +-------+-------+ | Chris | 98 | | Carol | 78 | | Bob | 56 | | David | 45 | | Sam | 89 | +-------+-------+
व्याख्या
IF(Name = 'Sam', 1, 0)— Sam के लिए 1, बाकी के लिए 0ASC— 0 पहले (Sam नहीं), फिर 1 (Sam)- समान मान (0) वालों में
Score DESCसे सॉर्ट
CASE WHEN विकल्प (अधिक लचीला)
ORDER BY CASE
WHEN Name = 'Sam' THEN 3
WHEN Name = 'VIP' THEN 2
ELSE 1
END, Score DESC;
उपयोग केस
- विशिष्ट रिकॉर्ड को शीर्ष/अंत में पिन करना
- स्टेटस के अनुसार सॉर्ट: 'Active' → 'Pending' → 'Inactive'
- फीचर्ड आइटम पहले दिखाना
प्रदर्शन नोट
ORDER BY IF(...) इंडेक्स का उपयोग नहीं कर सकता। छोटे परिणाम सेट के लिए ठीक है, बड़े सेट के लिए डिज़ाइन पर पुनर्विचार करें।