FIELD() फंक्शन के साथ कस्टम क्रम में सॉर्टिंग
जब आपको किसी कॉलम के मानों को एक विशिष्ट, गैर-मानक क्रम में व्यवस्थित करना हो, तो ORDER BY FIELD(column, value1, value2, ...) का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable(
ClientId VARCHAR(40),
ClientName VARCHAR(40)
);
Query OK, 0 rows affected (0.55 sec)
mysql> INSERT INTO DemoTable VALUES('987_John','John');
Query OK, 1 row affected (0.33 sec)
mysql> INSERT INTO DemoTable VALUES('1000_Sam','Sam');
Query OK, 1 row affected (0.22 sec)
mysql> INSERT INTO DemoTable VALUES('777_Carol','Carol');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('2000_Bob','Bob');
Query OK, 1 row affected (0.20 sec)
सभी रिकॉर्ड (डिफ़ॉल्ट क्रम)
mysql> SELECT * FROM DemoTable;
+-----------+------------+ | ClientId | ClientName | +-----------+------------+ | 987_John | John | | 1000_Sam | Sam | | 777_Carol | Carol | | 2000_Bob | Bob | +-----------+------------+ 4 rows in set (0.00 sec)
कस्टम क्रम में क्वेरी
mysql> SELECT * FROM DemoTable
ORDER BY FIELD(ClientId, '1000_Sam', '2000_Bob', '777_Carol', '987_John');
परिणाम:
+-----------+------------+ | ClientId | ClientName | +-----------+------------+ | 1000_Sam | Sam | | 2000_Bob | Bob | | 777_Carol | Carol | | 987_John | John | +-----------+------------+ 4 rows in set (0.04 sec)
व्याख्या: FIELD() प्रत्येक मान की स्थिति सूची में लौटाता है। जो मान सूची में नहीं हैं, उनके लिए 0 लौटाता है (पहले आते हैं)। यह प्राथमिकता-आधारित सॉर्टिंग के लिए आदर्श है।