MySQL में GROUP_CONCAT() के साथ पंक्तियों को एक स्ट्रिंग में संयोजित करना
एकाधिक पंक्तियों और कॉलम को एक स्ट्रिंग में संयोजित करने के लिए, GROUP_CONCAT() (पंक्तियों को जोड़ता है) के साथ CONCAT() (कॉलम को जोड़ता है) का उपयोग करें।
उदाहरण: ग्राहक डेटा को एक स्ट्रिंग में संयोजित करना
mysql> CREATE TABLE DemoTable1463 (
-> ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ClientName VARCHAR(20),
-> ClientAge INT
-> );
Query OK, 0 rows affected (1.37 sec)
mysql> INSERT INTO DemoTable1463 (ClientName, ClientAge) VALUES
-> ('Adam Smith', 34), ('John Doe', 29), ('David Miller', NULL), ('John Smith', 32);
Query OK, 4 rows affected (0.13 sec)
mysql> SELECT * FROM DemoTable1463;
+----------+--------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+--------------+-----------+
| 1 | Adam Smith | 34 |
| 2 | John Doe | 29 |
| 3 | David Miller | NULL |
| 4 | John Smith | 32 |
+----------+--------------+-----------+
4 rows in set (0.00 sec)
GROUP_CONCAT के साथ CONCAT क्वेरी
mysql> SELECT GROUP_CONCAT(CONCAT(ClientId, ':', ClientName, ':', IFNULL(ClientAge, '')))
-> FROM DemoTable1463;
परिणाम
+------------------------------------------------------------------------+ | GROUP_CONCAT(CONCAT(ClientId,':',ClientName,':',IFNULL(ClientAge,''))) | +------------------------------------------------------------------------+ | 1:Adam Smith:34,2:John Doe:29,3:David Miller:,4:John Smith:32 | +------------------------------------------------------------------------+ 1 row in set (0.04 sec)
घटक विश्लेषण
| फ़ंक्शन | भूमिका | उदाहरण आउटपुट |
|---|---|---|
CONCAT(ClientId, ':', ClientName, ':', IFNULL(ClientAge, '')) | प्रति पंक्ति कॉलम जोड़ता है | '1:Adam Smith:34' |
IFNULL(ClientAge, '') | NULL को खाली स्ट्रिंग से बदलता है | NULL → '' |
GROUP_CONCAT(...) | सभी पंक्ति स्ट्रिंग्स को जोड़ता है | '1:...,2:...,3:...,4:...' |
GROUP_CONCAT विकल्प
-- कस्टम विभाजक GROUP_CONCAT(...) SEPARATOR '|' -- क्रमबद्ध संयोजन GROUP_CONCAT(...) ORDER BY ClientName -- अधिकतम लंबाई सीमा (डिफ़ॉल्ट 1024 बाइट्स) SET SESSION group_concat_max_len = 10000; GROUP_CONCAT(...) -- अद्वितीय मान GROUP_CONCAT(DISTINCT ...)
उपयोग के मामले
- CSV/TSV निर्यात उत्पन्न करना
- रिपोर्ट के लिए सारांश स्ट्रिंग्स बनाना
- एप्लिकेशन लेयर के लिए JSON-जैसी संरचनाएं बनाना
- डेटा निर्यात/माइग्रेशन स्क्रिप्ट