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

MySQL में GROUP_CONCAT ORDER BY से समुच्चय फ़ंक्शन को क्रमबद्ध करें

MySQL में GROUP_CONCAT() के अंदर ORDER BY क्लॉज का उपयोग करके जोड़े गए मानों का क्रम नियंत्रित कर सकते हैं।

सिंटैक्स

GROUP_CONCAT(कॉलम_नाम ORDER BY क्रम_कॉलम [ASC|DESC] SEPARATOR 'अलग_करने_वाला')

उदाहरण: StudentId क्रम में नाम जोड़ें

1. टेबल बनाएं

mysql> CREATE TABLE DemoTable1588 (
    -> StudentId INT,
    -> StudentFirstName VARCHAR(20),
    -> StudentMarks INT
    -> );

2. डेटा डालें (समान अंक, अलग ID)

mysql> INSERT INTO DemoTable1588 VALUES(110, 'Bob', 78);
mysql> INSERT INTO DemoTable1588 VALUES(101, 'Sam', 78);
mysql> INSERT INTO DemoTable1588 VALUES(105, 'Mike', 78);

3. GROUP_CONCAT में ORDER BY

mysql> SELECT GROUP_CONCAT(StudentFirstName ORDER BY StudentId SEPARATOR '--')
    -> FROM DemoTable1588
    -> GROUP BY StudentMarks;

4. परिणाम

+------------------------------------------------------------------+
| group_concat(StudentFirstName order by StudentId separator '--') |
+------------------------------------------------------------------+
| Sam--Mike--Bob                                                   |
+------------------------------------------------------------------+

व्याख्या

  • सभी पंक्तियों के StudentMarks = 78 हैं
  • ORDER BY StudentId से ID 101, 105, 110 क्रम में
  • नाम: Sam (101), Mike (105), Bob (110)
  • SEPARATOR '--' से डबल हाइफन से अलग

अन्य ORDER BY विकल्प

-- वर्णानुक्रम
GROUP_CONCAT(name ORDER BY name)

-- अवरोही
GROUP_CONCAT(name ORDER BY name DESC)

-- एकाधिक कॉलम
GROUP_CONCAT(name ORDER BY priority DESC, name ASC)

सीमाएं

  • group_concat_max_len (डिफ़ॉल्ट 1024 बाइट्स) से परिणाम काटा जा सकता है
  • बड़े परिणाम के लिए सत्र में बढ़ाएं: SET SESSION group_concat_max_len = 1000000;

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

  • CSV निर्यात में क्रमबद्ध सूची
  • रिपोर्ट में समय-क्रमबद्ध घटनाएं
  • श्रेणीवार आइटम सूची
  1. - MySQL में ORDER BY CASE WHEN का उपयोग करके कस्टम क्रम में सॉर्ट करना

    MySQL में ORDER BY CASE: कस्टम सॉर्टिंग क्रम परिभाषित करना जब आपको डिफॉल्ट सॉर्टिंग (आरोही/अवरोही) के अलावा एक विशिष्ट क्रम में परिणाम चाहिए, तो ORDER BY CASE का उपयोग करें। उदाहरण: रंगों को कस्टम क्रम में सॉर्ट करें टेबल बनाएं: CREATE TABLE DemoTable ( Color VARCHAR(100) ); INSERT INTO DemoTa

  1. - MySQL में ORDER BY FIELD() से कस्टम क्रम में सॉर्ट करें

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

  1. - MySQL में डॉट वाले मानों (संस्करण संख्या) को कैसे क्रमबद्ध करें?

    MySQL में डॉट वाले स्ट्रिंग्स (जैसे संस्करण संख्या 10.5, 20.5) को संख्यात्मक रूप से क्रमबद्ध करने के लिए CAST(... AS DECIMAL) का उपयोग करें। समस्या स्ट्रिंग के रूप में क्रमबद्ध करने पर: 10, 10.5, 11, 20, 20.5 (लेक्सिकोग्राफिक) संख्यात्मक क्रम: 10, 10.5, 11, 20, 20.5 उदाहरण mysql> CREATE TABLE D