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

MySQL IN क्वेरी में कस्टम क्रम कैसे बनाए रखें?

FIELD() फ़ंक्शन के साथ ORDER BY

MySQL में IN क्लॉज में मानों के **कस्टम क्रम** में परिणाम क्रमबद्ध करने के लिए ORDER BY FIELD() का उपयोग करें।

सिंटैक्स

SELECT * FROM yourTableName 
WHERE yourColumnName IN (value1, value2, ..., valueN)
ORDER BY FIELD(yourColumnName, value1, value2, ..., valueN);

व्यावहारिक उदाहरण

1. टेबल बनाएं और डेटा डालें

mysql> CREATE TABLE OrderInDemo (
    -> Id INT,
    -> Name VARCHAR(100),
    -> Age INT
    -> );
Query OK, 0 rows affected (1.24 sec)

mysql> INSERT INTO OrderInDemo VALUES(90, 'David', 23);
mysql> INSERT INTO OrderInDemo VALUES(9, 'Sam', 24);
mysql> INSERT INTO OrderInDemo VALUES(10, 'Carol', 19);
mysql> INSERT INTO OrderInDemo VALUES(1, 'John', 26);
mysql> INSERT INTO OrderInDemo VALUES(3, 'Johnson', 25);
mysql> INSERT INTO OrderInDemo VALUES(2, 'Ramit', 20);

2. डेटा देखें (डिफ़ॉल्ट क्रम)

mysql> SELECT * FROM OrderInDemo;
+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
| 90   | David   | 23   |
| 9    | Sam     | 24   |
| 10   | Carol   | 19   |
| 1    | John    | 26   |
| 3    | Johnson | 25   |
| 2    | Ramit   | 20   |
+------+---------+------+
6 rows in set (0.00 sec)

3. कस्टम क्रम में क्वेरी (10, 1, 3)

mysql> SELECT * FROM OrderInDemo OD 
    -> WHERE OD.Id IN (10, 1, 3) 
    -> ORDER BY FIELD(OD.Id, 10, 1, 3);
+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
| 10   | Carol   | 19   |
| 1    | John    | 26   |
| 3    | Johnson | 25   |
+------+---------+------+
3 rows in set (0.00 sec)

परिणाम: पंक्तियाँ ठीक उसी क्रम में हैं: 10, फिर 1, फिर 3 - जैसा IN और FIELD में निर्दिष्ट है।

FIELD() कैसे काम करता है

  • FIELD(str, str1, str2, ...) - str की स्थिति लौटाता है सूची में (1-आधारित)
  • नहीं मिलने पर 0 लौटाता है
  • ORDER BY FIELD(...) इस स्थिति के अनुसार क्रमबद्ध करता है

वैकल्पिक: CASE WHEN

ORDER BY CASE Id
  WHEN 10 THEN 1
  WHEN 1  THEN 2
  WHEN 3  THEN 3
  ELSE 4
END

FIELD() अधिक संक्षिप्त और पठनीय है।

उपयोग केस

  • विशिष्ट ID क्रम में परिणाम दिखाना
  • उपयोगकर्ता-निर्दिष्ट क्रम (ड्रैग-एंड-ड्रॉप सॉर्टिंग)
  • प्राथमिकता-आधारित क्रमबद्धता
  1. - MySQL में ORDER BY FIELD() से एकाधिक ID के अनुसार क्रमबद्ध करें

    FIELD() फंक्शन के साथ कस्टम क्रम में सॉर्टिंग जब आपको किसी कॉलम के मानों को एक विशिष्ट, गैर-मानक क्रम में व्यवस्थित करना हो, तो ORDER BY FIELD(column, value1, value2, ...) का उपयोग करें। टेबल और डेटा CREATE TABLE DemoTable( ClientId VARCHAR(40), ClientName VARCHAR(40) ); Query OK, 0 rows a

  1. - MySQL में आरक्षित शब्द 'order' को टेबल नाम के रूप में उपयोग करने के लिए बैकटिक्स

    MySQL में ORDER एक आरक्षित शब्द (reserved word) है। इसे टेबल या कॉलम नाम के रूप में उपयोग करने के लिए बैकटिक्स (`) से घेरना आवश्यक है। समस्या CREATE TABLE order (StudentId INT); ERROR 1064: You have an error in your SQL syntax near order समाधान: बैकटिक्स का उपयोग CREATE TABLE `order` (StudentId

  1. - MySQL में न्यूमेरिक यूज़र-डिफ़ाइंड वेरिएबल के साथ ORDER BY कैसे करें?

    MySQL में डायनामिक कॉलम नाम के साथ ORDER BY करने के लिए, यूज़र-डिफ़ाइंड वेरिएबल और PREPARED STATEMENT का उपयोग करें। यह तब उपयोगी होता है जब कॉलम का नाम रनटाइम पर तय होता है। उदाहरण: वेरिएबल के साथ डायनामिक ORDER BY डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1898 (Number INT); डेटा इन्सर्ट