MySQL में GROUP_CONCAT() फ़ंक्शन: एकाधिक पंक्तियों को सिंगल स्ट्रिंग में जोड़ना
GROUP_CONCAT() एग्रीगेट फ़ंक्शन एक ग्रुप की सभी पंक्तियों के मानों को एक स्ट्रिंग में जोड़ देता है, जिसमें कस्टम सेपरेटर, क्रम, और डिस्टिंक्ट विकल्प उपलब्ध हैं।
उदाहरण के साथ पूर्ण कार्यान्वयन
टेबल बनाना
mysql> CREATE TABLE DemoTable (CountryName VARCHAR(100));
रिकॉर्ड डालना
mysql> INSERT INTO DemoTable VALUES('US'), ('AUS'), ('UK');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------------+
| CountryName |
+-------------+
| US |
| AUS |
| UK |
+-------------+
3 rows in set (0.00 sec)
स्टोर्ड प्रोसीजर में GROUP_CONCAT का उपयोग
mysql> DELIMITER //
mysql> CREATE PROCEDURE searchDemo(IN stringValue VARCHAR(255), OUT output TEXT)
BEGIN
SELECT GROUP_CONCAT(DISTINCT CountryName ORDER BY CountryName)
INTO output
FROM DemoTable
WHERE CountryName LIKE stringValue;
END //
mysql> DELIMITER ;
प्रोसीजर कॉल करना
mysql> CALL searchDemo('U%', @output);
mysql> SELECT @output;
आउटपुट:
+---------+
| @output |
+---------+
| UK,US |
+---------+
1 row in set (0.00 sec)
GROUP_CONCAT विकल्प:
GROUP_CONCAT([DISTINCT] expr [ORDER BY expr] [SEPARATOR str])
- DISTINCT: डुप्लिकेट मान हटाता है
- ORDER BY: जोड़ने से पहले क्रम तय करता है
- SEPARATOR: डिफ़ॉल्ट ',' है; कोई भी स्ट्रिंग उपयोग कर सकते हैं
सीधा SELECT में उपयोग
mysql> SELECT GROUP_CONCAT(CountryName ORDER BY CountryName SEPARATOR ' | ')
FROM DemoTable;
आउटपुट: AUS | UK | US
महत्वपूर्ण सीमाएं
- group_concat_max_len: डिफ़ॉल्ट 1024 बाइट्स; बड़ा परिणाम काट दिया जाता है
- बढ़ाने के लिए:
SET SESSION group_concat_max_len = 10000; - NULL मान स्वचालित रूप से अनदेखे किए जाते हैं
व्यावहारिक उपयोग के मामले
- कॉमा-सेपरेटेड टैग/श्रेणी सूची बनाना
- रिपोर्टिंग के लिए चाइल्ड रिकॉर्ड संक्षेपित करना
- ईमेल सूची, आईडी सूची जनरेट करना
- JSON/CSV निर्यात तैयारी