MySQL में ORDER BY FIELD() का उपयोग करके एक कॉलम को कस्टम क्रम में सॉर्ट करें, फिर दूसरे कॉलम से द्वितीयक सॉर्ट लागू करें।
सिंटैक्स
SELECT * FROM टेबल_नाम
ORDER BY FIELD(कॉलम1, 'मान1', 'मान2', ...) DESC/ASC,
कॉलम2 DESC/ASC;
उदाहरण: 'Mike' को पहले रखें, फिर ID अवरोही क्रम में
1. टेबल बनाएं
mysql> CREATE TABLE DemoTable (
-> Id INT,
-> Name VARCHAR(20)
-> );
2. डेटा डालें
mysql> INSERT INTO DemoTable VALUES(101, 'Chris'); mysql> INSERT INTO DemoTable VALUES(201, 'Mike'); mysql> INSERT INTO DemoTable VALUES(110, 'Adam'); mysql> INSERT INTO DemoTable VALUES(250, 'John');
3. क्वेरी: Mike पहले, फिर ID DESC
mysql> SELECT * FROM DemoTable
-> ORDER BY FIELD(Name, 'Mike') DESC, Id DESC;
4. परिणाम
+------+-------+ | Id | Name | +------+-------+ | 201 | Mike | | 250 | John | | 110 | Adam | | 101 | Chris | +------+-------+
व्याख्या
FIELD(Name, 'Mike')- 'Mike' के लिए 1, अन्य के लिए 0 देता हैDESC- 1 को पहले रखता है (Mike शीर्ष पर)Id DESC- शेष को ID अवरोही क्रम में सॉर्ट करता है
उन्नत पैटर्न
-- एकाधिक प्राथमिकता स्तर
ORDER BY FIELD(priority, 'critical', 'high', 'medium', 'low') DESC,
created_at ASC
-- CASE के साथ अधिक लचीलापन
ORDER BY CASE
WHEN status = 'urgent' THEN 1
WHEN status = 'pending' THEN 2
ELSE 3
END, due_date ASC
प्रदर्शन नोट
FIELD() इंडेक्स का उपयोग नहीं कर सकता। बड़े डेटासेट के लिए, एक सॉर्ट_ऑर्डर कॉलम जोड़ें और उस पर इंडेक्स बनाएं।