WHERE id IN(...) के साथ किसी विशेष कॉलम के अनुसार ऑर्डर करने के लिए FIELD() फ़ंक्शन का उपयोग करें।
सिंटैक्स
SELECT * FROM yourTableName
WHERE yourColumnName IN('value1', 'value2', ... N)
ORDER BY FIELD(yourColumnName, 'value1', 'value2', ... N);
उदाहरण के साथ समझें
सबसे पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE SelectOrderbyField (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Name VARCHAR(30),
-> Age INT,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.62 sec)
रिकॉर्ड डालें
mysql> INSERT INTO SelectOrderbyField(Name, Age) VALUES('John', 23);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO SelectOrderbyField(Name, Age) VALUES('Carol', 25);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO SelectOrderbyField(Name, Age) VALUES('Bob', 21);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO SelectOrderbyField(Name, Age) VALUES('Mike', 28);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO SelectOrderbyField(Name, Age) VALUES('Sam', 26);
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO SelectOrderbyField(Name, Age) VALUES('David', 23);
Query OK, 1 row affected (0.19 sec)
सभी रिकॉर्ड देखें
mysql> SELECT * FROM SelectOrderbyField;
आउटपुट
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 1 | John | 23 | | 2 | Carol | 25 | | 3 | Bob | 21 | | 4 | Mike | 28 | | 5 | Sam | 26 | | 6 | David | 23 | +----+-------+------+ 6 rows in set (0.00 sec)
ID कॉलम के अनुसार ऑर्डर करें
mysql> SELECT * FROM SelectOrderbyField
-> WHERE Id IN(5, 1, 3, 2, 6, 4)
-> ORDER BY FIELD(Id, 5, 1, 3, 2, 6, 4);
आउटपुट
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 5 | Sam | 26 | | 1 | John | 23 | | 3 | Bob | 21 | | 2 | Carol | 25 | | 6 | David | 23 | | 4 | Mike | 28 | +----+-------+------+ 6 rows in set (0.00 sec)
Name कॉलम के अनुसार ऑर्डर करें
mysql> SELECT * FROM SelectOrderbyField
-> WHERE Name IN('Sam', 'John', 'Bob', 'Carol', 'David', 'Mike')
-> ORDER BY FIELD(Name, 'Sam', 'John', 'Bob', 'Carol', 'David', 'Mike');
आउटपुट
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 5 | Sam | 26 | | 1 | John | 23 | | 3 | Bob | 21 | | 2 | Carol | 25 | | 6 | David | 23 | | 4 | Mike | 28 | +----+-------+------+ 6 rows in set (0.03 sec)
FIELD() फ़ंक्शन मानों की सूची में किसी मान की स्थिति लौटाता है, जिससे कस्टम सॉर्टिंग संभव होती है।