GROUP_CONCAT() और DISTINCT के साथ डुप्लिकेट मानों को संयोजित करना
एक ही ID के लिए अलग-अलग विषयों को एक ही पंक्ति में हाइफ़न से अलग करके दिखाने के लिए GROUP_CONCAT() के साथ DISTINCT का उपयोग करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Id INT,
Subject VARCHAR(40)
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES (100, 'MySQL'); mysql> INSERT INTO DemoTable VALUES (100, 'MongoDB'); mysql> INSERT INTO DemoTable VALUES (100, 'Java'); mysql> INSERT INTO DemoTable VALUES (100, 'MongoDB'); mysql> INSERT INTO DemoTable VALUES (101, 'MySQL'); mysql> INSERT INTO DemoTable VALUES (101, 'MySQL');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+------+---------+ | Id | Subject | +------+---------+ | 100 | MySQL | | 100 | MongoDB | | 100 | Java | | 100 | MongoDB | | 101 | MySQL | | 101 | MySQL | +------+---------+
प्रत्येक ID के लिए डिस्टिंक्ट विषयों को हाइफ़न से जोड़ने के लिए क्वेरी:
mysql> SELECT Id, GROUP_CONCAT(DISTINCT Subject SEPARATOR '-') AS Subject
FROM DemoTable
GROUP BY Id;
आउटपुट:
+------+--------------------+ | Id | Subject | +------+--------------------+ | 100 | Java-MongoDB-MySQL | | 101 | MySQL | +------+--------------------+
व्याख्या:
- GROUP BY Id: रिकॉर्ड्स को ID के अनुसार समूहित करता है
- DISTINCT Subject: प्रत्येक ग्रुप में डुप्लिकेट विषयों को हटाता है (ID 100 के लिए MongoDB दो बार था)
- SEPARATOR '-': विषयों को हाइफ़न (-) से अलग करता है
- GROUP_CONCAT(): ग्रुप के सभी मानों को एक स्ट्रिंग में जोड़ता है
नोट: GROUP_CONCAT का डिफॉल्ट मैक्सिमम लेंथ 1024 वर्ण होता है। बड़े डेटा के लिए SET SESSION group_concat_max_len = 10000; सेट कर सकते हैं।