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

MySQL में पारित IDs के कस्टम क्रम को बनाए रखना

परिचय

जब आपको विशिष्ट IDs के क्रम में रिकॉर्ड प्राप्त करने हों जो प्राकृतिक क्रम (ASC/DESC) से अलग हो, तो ORDER BY CASE स्टेटमेंट का उपयोग करके कस्टम क्रम परिभाषित किया जा सकता है।

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE DemoTable1550 (
    -> Id INT,
    -> Name VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.61 sec)
mysql> INSERT INTO DemoTable1550 VALUES(101, 'Chris');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable1550 VALUES(110, 'Bob');
Query OK, 1 row affected (0.29 sec)
mysql> INSERT INTO DemoTable1550 VALUES(105, 'Carol');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable1550 VALUES(109, 'Mike');
Query OK, 1 row affected (0.17 sec)

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable1550;

आउटपुट (डिफ़ॉल्ट सम्मिलन क्रम):

+------+-------+
| Id   | Name  |
+------+-------+
| 101  | Chris |
| 110  | Bob   |
| 105  | Carol |
| 109  | Mike  |
+------+-------+
4 rows in set (0.00 sec)

कस्टम क्रम में रिकॉर्ड प्राप्त करने की क्वेरी

हम IDs 109, 101, 110 को इसी क्रम में चाहते हैं:

mysql> SELECT * FROM DemoTable1550
    -> WHERE Id IN (109, 101, 110)
    -> ORDER BY CASE Id
    ->   WHEN 109 THEN 1001
    ->   WHEN 101 THEN 1002
    ->   WHEN 110 THEN 1003
    -> END;

परिणाम

+------+-------+
| Id   | Name  |
+------+-------+
| 109  | Mike  |
| 101  | Chris |
| 110  | Bob   |
+------+-------+
3 rows in set (0.00 sec)

व्याख्या

  • WHERE Id IN (109, 101, 110) - केवल ये तीन रिकॉर्ड चुनता है
  • CASE Id WHEN 109 THEN 1001 ... - प्रत्येक ID को क्रम मान देता है
  • ORDER BY CASE ... - उन क्रम मानों के आधार पर क्रमबद्ध करता है
  • क्रम मान (1001, 1002, 1003) कोई भी क्रमिक संख्याएं हो सकती हैं

सरल विकल्प: FIELD() फंक्शन

MySQL का FIELD() फंक्शन इसे और सरल बनाता है:

SELECT * FROM DemoTable1550
WHERE Id IN (109, 101, 110)
ORDER BY FIELD(Id, 109, 101, 110);

FIELD(str, str1, str2, ...) सूची में str की स्थिति लौटाता है (1-आधारित), जो कस्टम क्रमबद्धिकरण के लिए बिल्कुल उपयुक्त है।

उपयोग के मामले

  • उपयोगकर्ता-निर्दिष्ट क्रम में परिणाम दिखाना
  • फीचर्ड/प्राथमिकता आइटम पहले दिखाना
  • एप्लिकेशन-स्तर क्रम को डेटाबेस क्वेरी में लागू करना
  1. - MySQL में ORDER BY FIELD() से कस्टम क्रम में सॉर्ट करें

    MySQL का ORDER BY FIELD() फ़ंक्शन आपको पूर्वनिर्धारित क्रम में परिणामों को सॉर्ट करने की अनुमति देता है, न कि केवल आरोही या अवरोही क्रम में। सिंटैक्स SELECT * FROM टेबल_नाम ORDER BY FIELD(कॉलम_नाम, मान1, मान2, मान3, ...); उदाहरण: नौकरी पदनाम को वरिष्ठता क्रम में सॉर्ट करना 1. टेबल बनाएं ); 2. ड

  1. - MySQL में ORDER BY ASC के साथ NULL मानों को नीचे कैसे दिखाएं?

    MySQL में ORDER BY ASC डिफ़ॉल्ट रूप से NULL मानों को पहले रखता है। NULL मानों को अंत में (नीचे) रखते हुए आरोही क्रम बनाए रखने के लिए, CASE स्टेटमेंट या IS NULL चेक के साथ कस्टम सॉर्टिंग लागू करें। उदाहरण: NULL और खाली स्ट्रिंग को नीचे रखें डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1937 (Na

  1. - MySQL में ORDER BY CASE WHEN से कस्टम क्रम में पंक्तियाँ कैसे व्यवस्थित करें?

    CASE WHEN सिंटैक्स select * from yourTableName order by case when name=John then 110 when name=Bob then 105 when name=David then 104 else 101 end; उदाहरण insert into demo51(name) values(John), (Bob), (David), (Sam); परिणाम: कस्टम प्राथमिकता के अनुसार DESC क्रम +----+-------+ |