GROUP_CONCAT() से ग्रुपिंग के साथ सभी मान प्राप्त करें
MySQL में एक कॉलम से GROUP BY करते समय दूसरे कॉलम के सभी मान प्राप्त करने के लिए GROUP_CONCAT() फंक्शन का उपयोग करें।
उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE groupByOneSelectAll (
-> StudentDetails VARCHAR(100),
-> StudentName VARCHAR(100)
-> );
डेटा इन्सर्ट करें:
mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'John');
mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'Chris');
mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'Robert');
mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'Bob');
mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'David');
सभी रिकॉर्ड:
+------------------+-------------+ | StudentDetails | StudentName | +------------------+-------------+ | StudentFirstName | John | | StudentFirstName | Chris | | StudentFirstName | Robert | | StudentFirstName | Bob | | StudentFirstName | David | +------------------+-------------+
GROUP BY के साथ सभी नाम जोड़ने की क्वेरी
mysql> SELECT StudentDetails, GROUP_CONCAT(StudentName)
-> FROM groupByOneSelectAll
-> GROUP BY StudentDetails;
परिणाम:
+------------------+-----------------------------+ | StudentDetails | GROUP_CONCAT(StudentName) | +------------------+-----------------------------+ | StudentFirstName | John,Chris,Robert,Bob,David | +------------------+-----------------------------+
GROUP_CONCAT विकल्प
-- कस्टम सेपरेटर GROUP_CONCAT(StudentName SEPARATOR ' | ') -- सॉर्ट करके जोड़ें GROUP_CONCAT(StudentName ORDER BY StudentName) -- अधिकतम लंबाई सीमित करें (डिफ़ॉल्ट 1024) GROUP_CONCAT(StudentName SEPARATOR ',' LIMIT 1000) -- संयुक्त GROUP_CONCAT(DISTINCT StudentName ORDER BY StudentName SEPARATOR ', ')
चेतावनी: डिफ़ॉल्ट रूप से GROUP_CONCAT का परिणाम 1024 अक्षर तक सीमित होता है। SET SESSION group_concat_max_len = 10000; से बढ़ा सकते हैं।
उपयोग केस: रिपोर्टिंग, CSV एक्सपोर्ट, टैग/श्रेणी सूची बनाना।