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 निर्यात में क्रमबद्ध सूची
- रिपोर्ट में समय-क्रमबद्ध घटनाएं
- श्रेणीवार आइटम सूची