GROUP_CONCAT() फंक्शन
GROUP_CONCAT() एक एग्रीगेट फंक्शन है जो ग्रुप के सभी मानों को एक स्ट्रिंग में जोड़ देता है, डिफ़ॉल्ट रूप से कॉमा (,) से अलग करके।
सिंटैक्स
GROUP_CONCAT([DISTINCT] expr [ORDER BY ...] [SEPARATOR str])
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable813(
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserFirstName VARCHAR(100),
UserLastName VARCHAR(100)
);
Query OK, 0 rows affected (0.49 sec)
रिकॉर्ड्स इन्सर्ट करना
mysql> INSERT INTO DemoTable813(UserFirstName,UserLastName) VALUES
('Adam','Smith'),('Chris','Brown'),('David','Miller'),('Carol','Taylor');
Query OK, 4 rows affected (...)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable813;
+--------+---------------+--------------+ | UserId | UserFirstName | UserLastName | +--------+---------------+--------------+ | 1 | Adam | Smith | | 2 | Chris | Brown | | 3 | David | Miller | | 4 | Carol | Taylor | +--------+---------------+--------------+ 4 rows in set (0.00 sec)
शर्त के साथ GROUP_CONCAT
UserId < 4 वाले यूजर्स के लास्ट नेम जोड़ना:
mysql> SELECT GROUP_CONCAT(UserLastName) FROM DemoTable813 WHERE UserId < 4;
परिणाम
+----------------------------+ | GROUP_CONCAT(UserLastName) | +----------------------------+ | Smith,Brown,Miller | +----------------------------+ 1 row in set (0.00 sec)
उन्नत विकल्प
कस्टम सेपरेटर
SELECT GROUP_CONCAT(UserLastName SEPARATOR ' | ') FROM DemoTable813 WHERE UserId < 4; -- परिणाम: Smith | Brown | Miller
क्रमबद्ध परिणाम
SELECT GROUP_CONCAT(UserLastName ORDER BY UserLastName DESC) FROM DemoTable813 WHERE UserId < 4; -- परिणाम: Smith,Miller,Brown
डुप्लिकेट हटाना
SELECT GROUP_CONCAT(DISTINCT UserLastName) FROM DemoTable813;
एकाधिक कॉलम जोड़ना
SELECT GROUP_CONCAT(CONCAT(UserFirstName, ' ', UserLastName) SEPARATOR '; ') FROM DemoTable813 WHERE UserId < 4; -- परिणाम: Adam Smith; Chris Brown; David Miller
GROUP_CONCAT के साथ GROUP BY
SELECT Department, GROUP_CONCAT(EmployeeName) FROM Employees GROUP BY Department;
महत्वपूर्ण सीमाएं
- डिफ़ॉल्ट लंबाई सीमा: 1024 बाइट्स (
group_concat_max_lenसिस्टम वेरिएबल से नियंत्रित) - लंबे परिणाम के लिए:
SET SESSION group_concat_max_len = 10000; - NULL मान स्वतः अनदेखे हो जाते हैं
प्रदर्शन नोट
बड़े डेटासेट्स पर GROUP_CONCAT मेमोरी-इंटेंसिव हो सकता है। आवश्यकता अनुसार LIMIT या फ़िल्टरिंग का उपयोग करें।