ORDER BY बूलियन अभिव्यक्ति के साथ कस्टम सॉर्टिंग
किसी विशिष्ट मान को परिणाम सेट के अंत में (या शुरुआत में) रखने के लिए ORDER BY column = 'value', column पैटर्न का उपयोग करें। बूलियन अभिव्यक्ति FALSE (0) को TRUE (1) से पहले क्रमबद्ध करती है।
टेबल और डेटा
mysql> CREATE TABLE DemoTable(
FirstName VARCHAR(100)
);
Query OK, 0 rows affected (0.97 sec)
mysql> INSERT INTO DemoTable VALUES('Chris');
Query OK, 1 row affected (0.31 sec)
mysql> INSERT INTO DemoTable VALUES('Adam');
Query OK, 1 row affected (0.35 sec)
mysql> INSERT INTO DemoTable VALUES('John');
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DemoTable VALUES('Sam');
Query OK, 1 row affected (0.37 sec)
mysql> INSERT INTO DemoTable VALUES('Mike');
Query OK, 1 row affected (0.27 sec)
mysql> INSERT INTO DemoTable VALUES('David');
Query OK, 1 row affected (0.27 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+-----------+ | FirstName | +-----------+ | Chris | | Adam | | John | | Sam | | Mike | | David | +-----------+ 6 rows in set (0.00 sec)
'Mike' को अंत में रखकर क्रमबद्ध करना
mysql> SELECT * FROM DemoTable ORDER BY FirstName = 'Mike', FirstName;
परिणाम:
+-----------+ | FirstName | +-----------+ | Adam | | Chris | | David | | John | | Sam | | Mike | +-----------+ 6 rows in set (0.00 sec)
तर्क: FirstName = 'Mike' 'Mike' के लिए TRUE (1) और अन्य के लिए FALSE (0) लौटाता है। ORDER BY पहले 0 फिर 1 क्रमबद्ध करता है, इसलिए 'Mike' अंत में आता है। द्वितीयक क्रम FirstName (वर्णानुक्रम) है।
शुरुआत में रखने के लिए: ORDER BY FirstName = 'Mike' DESC, FirstName का उपयोग करें।