MySQL में FIELD() फ़ंक्शन और ORDER BY ... DESC का उपयोग करके IN() सूची में मानों के कस्टम क्रम में परिणाम क्रमबद्ध करें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (Number INT); Query OK, 0 rows affected (0.57 sec)
mysql> INSERT INTO DemoTable VALUES(10), (20), (30), (40), (50);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+--------+ | Number | +--------+ | 10 | | 20 | | 30 | | 40 | | 50 | +--------+ 5 rows in set (0.00 sec)
IN() सूची के कस्टम क्रम में अवरोही क्रमबद्ध करना
mysql> SELECT * FROM DemoTable
-> WHERE Number IN (40, 50, 20, 30, 10)
-> ORDER BY FIELD(Number, 40, 50, 20, 30, 10) DESC;
आउटपुट
+--------+ | Number | +--------+ | 10 | | 30 | | 20 | | 50 | | 40 | +--------+ 5 rows in set (0.03 sec)
व्याख्या:
FIELD(Number, 40, 50, 20, 30, 10)प्रत्येक मान की सूची में स्थिति लौटाता है (1-आधारित): 40→1, 50→2, 20→3, 30→4, 10→5ORDER BY ... DESC- उच्च स्थिति पहले (5→4→3→2→1)- परिणाम: 10, 30, 20, 50, 40 (सूची के विपरीत क्रम)
आरोही क्रम (सूची क्रम में) के लिए:
ORDER BY FIELD(Number, 40, 50, 20, 30, 10) ASC
परिणाम: 40, 50, 20, 30, 10
FIELD() विशेषताएं:
- मान न मिलने पर 0 लौटाता है (पहले आते हैं ASC में)
- केस-सेंसिटिव तुलना (कॉलेशन पर निर्भर)
FIND_IN_SET()समान लेकिन कॉमा-सेपरेटेड स्ट्रिंग लेता है
उपयोग का मामला: विशिष्ट क्रम में श्रेणियाँ/स्थितियाँ दिखाना (जैसे: 'Pending', 'Processing', 'Shipped', 'Delivered', 'Cancelled')।