MySQL में ORDER BY CASE के साथ विशिष्ट मान वाली पंक्तियों को शीर्ष पर प्राथमिकता देना
ORDER BY CASE एक्सप्रेशन का उपयोग करके कस्टम प्राथमिकता क्रम परिभाषित किया जा सकता है, जैसे 'John' नाम वाली पंक्तियों को सबसे ऊपर रखना।
व्यावहारिक उदाहरण
तालिका बनाना
mysql> CREATE TABLE DemoTable (
StudentName VARCHAR(100),
StudentMarks INT
);
रिकॉर्ड डालना (एकाधिक 'John' सहित)
mysql> INSERT INTO DemoTable VALUES('Chris', 45);
mysql> INSERT INTO DemoTable VALUES('John', 67);
mysql> INSERT INTO DemoTable VALUES('David', 89);
mysql> INSERT INTO DemoTable VALUES('John', 98);
mysql> INSERT INTO DemoTable VALUES('Mike', 79);
mysql> INSERT INTO DemoTable VALUES('John', 99);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 45 | | John | 67 | | David | 89 | | John | 98 | | Mike | 79 | | John | 99 | +-------------+--------------+
'John' को शीर्ष पर, फिर नाम और अंक अनुसार क्रमबद्ध करने के लिए क्वेरी
mysql> SELECT * FROM DemoTable
ORDER BY CASE StudentName WHEN 'John' THEN 2 ELSE 3 END,
StudentName, StudentMarks;
आउटपुट:
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | John | 67 | | John | 98 | | John | 99 | | Chris | 45 | | David | 89 | | Mike | 79 | +-------------+--------------+
व्याख्या
CASE WHEN 'John' THEN 2 ELSE 3 END- 'John' को प्राथमिकता 2, अन्य को 3- कम संख्या पहले आती है (आरोही क्रम)
- दूसरा क्रमबद्ध:
StudentName- वर्णानुक्रम - तीसरा क्रमबद्ध:
StudentMarks- अंकों के अनुसार
सरल विकल्प: बूलियन एक्सप्रेशन
ORDER BY CASE StudentName WHEN 'John' THEN 1 WHEN 'David' THEN 2 WHEN 'Mike' THEN 3 ELSE 4 END, StudentMarks DESC;
उपयोग के मामले: फीचर्ड आइटम, एडमिन उपयोगकर्ता, प्राथमिकता श्रेणियां, डिफ़ॉल्ट विकल्प।