MySQL में सबक्वेरी में DISTINCT और GROUP_CONCAT के साथ ID द्वारा विशिष्ट नाम संयोजित करना
GROUP_CONCAT() के साथ DISTINCT का उपयोग करने के लिए, पहले सबक्वेरी में DISTINCT लागू करें, फिर बाहरी क्वेरी में GROUP_CONCAT() करें।
व्यावहारिक उदाहरण
तालिका बनाना
mysql> CREATE TABLE DemoTable (
Id INT,
Name VARCHAR(100)
);
डुप्लिकेट रिकॉर्ड डालना
mysql> INSERT INTO DemoTable VALUES(100, 'Chris'); mysql> INSERT INTO DemoTable VALUES(200, 'Robert'); mysql> INSERT INTO DemoTable VALUES(100, 'Chris'); mysql> INSERT INTO DemoTable VALUES(300, 'David'); mysql> INSERT INTO DemoTable VALUES(400, 'Mike'); mysql> INSERT INTO DemoTable VALUES(400, 'Mike');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+------+--------+ | Id | Name | +------+--------+ | 100 | Chris | | 200 | Robert | | 100 | Chris | | 300 | David | | 400 | Mike | | 400 | Mike | +------+--------+
ID द्वारा विशिष्ट नाम संयोजित करने के लिए क्वेरी
mysql> SELECT GROUP_CONCAT(Name) FROM (
SELECT DISTINCT Id, Name FROM DemoTable
) tbl;
आउटपुट:
+-------------------------+ | GROUP_CONCAT(Name) | +-------------------------+ | Chris,Robert,David,Mike | +-------------------------+
व्याख्या
- सबक्वेरी:
SELECT DISTINCT Id, Name FROM DemoTable- (Id, Name) जोड़े के डुप्लिकेट हटाता है - बाहरी क्वेरी:
GROUP_CONCAT(Name)- सभी विशिष्ट नामों को अल्पविराम से जोड़ता है
प्रति ID GROUP_CONCAT DISTINCT (MySQL 8.0+)
-- कस्टम सेपरेटर GROUP_CONCAT(DISTINCT Name SEPARATOR '; ') -- क्रमबद्ध GROUP_CONCAT(DISTINCT Name ORDER BY Name) -- अधिकतम लंबाई बढ़ाना SET SESSION group_concat_max_len = 1000000;