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

MySQL परिणाम सेट को निर्दिष्ट क्रम में कैसे बनाएं?

परिचय

MySQL में FIND_IN_SET() फंक्शन का उपयोग करके परिणाम सेट को विशिष्ट ID क्रम में क्रमबद्ध किया जा सकता है जो प्राकृतिक क्रम से अलग हो।

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

mysql> CREATE TABLE DemoTable1563 (
    -> StudentId INT,
    -> StudentName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.52 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1001, 'Chris');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1010, 'Bob');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1005, 'Chris');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1015, 'David');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1030, 'Mike');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1020, 'Sam');
Query OK, 1 row affected (0.14 sec)

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

mysql> SELECT * FROM DemoTable1563;

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

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1001      | Chris       |
| 1010      | Bob         |
| 1005      | Chris       |
| 1015      | David       |
| 1030      | Mike        |
| 1020      | Sam         |
+-----------+-------------+
6 rows in set (0.00 sec)

निर्दिष्ट क्रम में परिणाम प्राप्त करने की क्वेरी

mysql> SELECT * FROM DemoTable1563
    -> WHERE StudentId IN (1001, 1030, 1010, 1020)
    -> ORDER BY FIND_IN_SET(StudentId, '1001,1030,1010,1020');

परिणाम

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1001      | Chris       |
| 1030      | Mike        |
| 1010      | Bob         |
| 1020      | Sam         |
+-----------+-------------+
4 rows in set (0.00 sec)

व्याख्या

  • WHERE StudentId IN (...) - केवल निर्दिष्ट IDs चुनता है
  • FIND_IN_SET(StudentId, '1001,1030,1010,1020') - सूची में StudentId की स्थिति लौटाता है (1, 2, 3, 4)
  • ORDER BY FIND_IN_SET(...) - उस स्थिति के आधार पर क्रमबद्ध करता है
  • परिणाम ठीक उसी क्रम में: 1001, 1030, 1010, 1020

तुलना: ORDER BY CASE vs FIND_IN_SET

-- CASE (अधिक वर्बोज, लचीला)
ORDER BY CASE StudentId
  WHEN 1001 THEN 1 WHEN 1030 THEN 2 WHEN 1010 THEN 3 WHEN 1020 THEN 4 END

-- FIND_IN_SET (सरल, कॉमा-सूची के लिए)
ORDER BY FIND_IN_SET(StudentId, '1001,1030,1010,1020')

FIELD() फंक्शन (और भी सरल)

ORDER BY FIELD(StudentId, 1001, 1030, 1010, 1020)

FIELD() संख्यात्मक IDs के लिए सबसे अच्छा है, FIND_IN_SET() स्ट्रिंग सूचियों के लिए।

  1. - MySQL में कॉलम के लिए डिफ़ॉल्ट मान सेट करना

    DEFAULT कीवर्ड का उपयोग किसी कॉलम के लिए डिफ़ॉल्ट मान सेट करने के लिए DEFAULT कीवर्ड का उपयोग करें। यह मान तब स्वतः इन्सर्ट हो जाता है जब कोई मान स्पष्ट रूप से प्रदान नहीं किया जाता। उदाहरण: टेबल बनाना और डिफ़ॉल्ट मान जोड़ना पहले एक बेसिक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable758 ( Id

  1. - Java में MySQL कनेक्शन: पोर्ट 3306 और JDBC URL

    Java से MySQL डेटाबेस से कनेक्ट करने के लिए JDBC ड्राइवर और सही कनेक्शन URL (पोर्ट 3306 सहित) की आवश्यकता होती है। JDBC URL प्रारूप jdbc:mysql://होस्ट:पोर्ट/डेटाबेस_नाम?पैरामीटर्स डिफ़ॉल्ट पोर्ट: 3306 jdbc:mysql://localhost:3306/sample?useSSL=false पूर्ण Java उदाहरण import java.sql.Connection; im

  1. - MySQL में यूज़र-डिफ़ाइन्ड वेरिएबल (@var) से क्वेरी परिणाम असाइन करें

    MySQL में @variable_name सिंटैक्स से यूज़र-डिफ़ाइन्ड वेरिएबल बनाकर SELECT ... INTO @var या असाइनमेंट ऑपरेटर := से क्वेरी परिणाम संग्रहीत कर सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1864 ( Id INT, FirstName VARCHAR(20), LastName VARCHAR(20) ); डेटा डालें mysql> INSERT INT