GROUP_CONCAT() से मल्टीपल रो को सिंगल रो में जोड़ना
किसी कॉलम के सभी मानों को एक ही रो में, किसी सेपरेटर (जैसे '/') से जोड़कर दिखाने के लिए GROUP_CONCAT() फंक्शन का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable1355 (Location TEXT);
INSERT INTO DemoTable1355 VALUES('E:');
INSERT INTO DemoTable1355 VALUES('AllPrograms');
INSERT INTO DemoTable1355 VALUES('ChatApplicationInJava');
INSERT INTO DemoTable1355 VALUES('MainFolder');
मौजूदा डेटा
+-----------------------+ | Location | +-----------------------+ | E: | | AllPrograms | | ChatApplicationInJava | | MainFolder | +-----------------------+
क्वेरी: सभी लोकेशन को '/' से जोड़ना
SELECT GROUP_CONCAT(Location SEPARATOR '/') FROM DemoTable1355;
आउटपुट
+-------------------------------------------------+ | group_concat(Location separator '/') | +-------------------------------------------------+ | E:/AllPrograms/ChatApplicationInJava/MainFolder | +-------------------------------------------------+
महत्वपूर्ण विकल्प
डिस्टिंक्ट मान (डुप्लीकेट हटाना)
SELECT GROUP_CONCAT(DISTINCT Location SEPARATOR '/') FROM DemoTable1355;
ऑर्डर के साथ
SELECT GROUP_CONCAT(Location ORDER BY Location SEPARATOR '/') FROM DemoTable1355;
लंबाई सीमा बढ़ाना (डिफॉल्ट 1024 बाइट्स)
SET SESSION group_concat_max_len = 1000000; SELECT GROUP_CONCAT(Location SEPARATOR '/') FROM DemoTable1355;
ग्रुपिंग के साथ उपयोग
SELECT Category, GROUP_CONCAT(ProductName SEPARATOR ', ') FROM Products GROUP BY Category;
फाइल पाथ बनाने का व्यावहारिक उदाहरण
SELECT GROUP_CONCAT(FolderName ORDER BY Level SEPARATOR '/') AS FullPath FROM FolderHierarchy WHERE RootId = 1;
चेतावनी
- परिणाम
group_concat_max_lenसे लंबा होने पर कट जाता है (साइलेंटली) - बहुत बड़े डेटासेट के लिए मेमोरी समस्या हो सकती है
- JSON_ARRAYAGG() (MySQL 5.7+) ऐरे फॉर्मेट में बेहतर विकल्प हो सकता है