ORDER BY FIELD(col, val1, val2, ...) का उपयोग करके कस्टम प्राथमिकता क्रम में सॉर्ट करें, और WHERE ... OR ... से केवल वांछित मान चुनें।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1884 (Marks INT);
डेटा डालें
mysql> INSERT INTO DemoTable1884 VALUES(55), (97), (79), (87);
98 या 87 में से उच्च प्राथमिकता वाला चुनें
mysql> SELECT * FROM DemoTable1884
WHERE Marks = 98 OR Marks = 87
ORDER BY FIELD(Marks, 98, 87)
LIMIT 1;
आउटपुट:
+-------+ | Marks | +-------+ | 87 | +-------+
व्याख्या
WHERE Marks = 98 OR Marks = 87→ केवल 98 या 87 वाली पंक्तियाँ (यहां केवल 87 मौजूद)।ORDER BY FIELD(Marks, 98, 87)→ 98 को पहली प्राथमिकता, 87 को दूसरी।LIMIT 1→ शीर्ष प्राथमिकता वाली एक पंक्ति।
FIELD() फ़ंक्शन
FIELD(str, val1, val2, ...) -- str की सूची में स्थिति (1-आधारित), नहीं मिलने पर 0
FIELD(87, 98, 87)= 2FIELD(98, 98, 87)= 1- क्रम: छोटी स्थिति पहले (ASC)।
उपयोग के मामले
- स्थिति प्राथमिकता:
ORDER BY FIELD(status, 'urgent', 'high', 'normal', 'low') - श्रेणी क्रम:
ORDER BY FIELD(category, 'premium', 'standard', 'basic') - विशिष्ट आईडी क्रम:
ORDER BY FIELD(id, 5, 3, 8, 1)
नोट
FIELD()केस-इनसेंसिटिव स्ट्रिंग तुलना करता है।- सूची में मान न होने पर 0 → अंत में सॉर्ट होता है।
- बड़े डेटासेट पर इंडेक्स उपयोग नहीं कर सकता; छोटी परिणाम सेट के लिए ठीक।