IN() और FIELD() के संयोजन से कस्टम क्रम में परिणाम प्राप्त करना
जब आपको विशिष्ट मानों के लिए पंक्तियां चुननी हों और उन्हें एक विशेष क्रम में दिखाना हो, तो WHERE ... IN(...) के साथ ORDER BY FIELD(...) का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable(
StudentId VARCHAR(10),
StudentName VARCHAR(20)
);
Query OK, 0 rows affected (4.11 sec)
mysql> INSERT INTO DemoTable VALUES('10001','Adam');
Query OK, 1 row affected (0.52 sec)
mysql> INSERT INTO DemoTable VALUES('1010','Chris');
Query OK, 1 row affected (0.72 sec)
mysql> INSERT INTO DemoTable VALUES('1020','Bob');
Query OK, 1 row affected (0.34 sec)
mysql> INSERT INTO DemoTable VALUES('1030','Carol');
Query OK, 1 row affected (0.47 sec)
mysql> INSERT INTO DemoTable VALUES('1040','Sam');
Query OK, 1 row affected (0.29 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 10001 | Adam | | 1010 | Chris | | 1020 | Bob | | 1030 | Carol | | 1040 | Sam | +-----------+-------------+ 5 rows in set (0.00 sec)
कस्टम क्रम में चुनने की क्वेरी
mysql> SELECT * FROM DemoTable
WHERE StudentId IN('1040','1010','1020','1030','10001')
ORDER BY FIELD(StudentId,'1040','1010','1020','1030','10001');
परिणाम:
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1040 | Sam | | 1010 | Chris | | 1020 | Bob | | 1030 | Carol | | 10001 | Adam | +-----------+-------------+ 5 rows in set (0.02 sec)
व्याख्या: IN() केवल सूचीबद्ध मानों वाली पंक्तियां चुनता है। FIELD() प्रत्येक मान की सूची में स्थिति देता है (1040→1, 1010→2, आदि)। ORDER BY उस स्थिति के अनुसार क्रमबद्ध करता है। दोनों सूचियों में समान क्रम होना चाहिए।