Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में WHERE IN के साथ FIELD() फ़ंक्शन का उपयोग करके कस्टम ऑर्डर कैसे करें?


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() फ़ंक्शन मानों की सूची में किसी मान की स्थिति लौटाता है, जिससे कस्टम सॉर्टिंग संभव होती है।

  1. - MySQL में केवल तारीख के आधार पर रिकॉर्ड कैसे चुनें?

    MySQL में DATE() फंक्शन का उपयोग करके डेटाइम कॉलम से केवल तारीख भाग की तुलना करें। सिंटैक्स SELECT * FROM yourTableName WHERE DATE(yourDateColumnName) = anyDate; उदाहरण टेबल बनाना (पिछले लेख जैसा ही) mysql> create table AllRecordsFromadate ( -> Id int, -> Name varchar(100), -> Age in

  1. Java में MySQL ResultSet से कॉलम नाम कैसे प्राप्त करें? Java में MySQL ResultSet से कॉलम नाम कैसे प्राप्त करें?

    ResultSetMetaData.getMetaData() का उपयोग करें JDBC में ResultSet से कॉलम नाम प्राप्त करने के लिए getMetaData() मेथड को कॉल करें जो ResultSetMetaData ऑब्जेक्ट लौटाता है। प्रोटोटाइप ResultSetMetaData getMetaData() throws SQLException; मुख्य मेथड्स getColumnCount() — कॉलम की संख्या। getColumnLabel(

  1. MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें

    information_schema.columns टेबल को क्वेरी करके डेटाबेस में विशिष्ट कॉलम नाम वाली सभी टेबल खोजें। सिंटैक्स SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name LIKE %yourSearchValue% AND table_schema = DATABASE(); उदाहरण: Client वाली कॉलम खोजना SELECT DISTINCT table_name FR