Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में GROUP_CONCAT() का उपयोग करके कई पंक्तियों के डेटा को संयोजित करना

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 निर्यात तैयारी
  1. - MySQL टेबल से एकाधिक पंक्तियां कैसे हटाएं?

    हम उन एकाधिक पंक्तियों की पहचान करने वाले WHERE क्लॉज के साथ DELETE स्टेटमेंट का उपयोग करके MySQL टेबल से एकाधिक पंक्तियां हटा सकते हैं। उदाहरण 2; Query OK, 2 rows affected (0.04 sec) 2 वाली दो पंक्तियों की पहचान करता है। mysql> Select * from names; +------+-----------+ | id | name |

  1. - एकाधिक टेबल से डेटा का उपयोग करके MySQL व्यू कैसे बनाएं?

    MySQL UNION ऑपरेटर दो या अधिक परिणाम सेट को जोड़ सकता है, इसलिए हम UNION ऑपरेटर का उपयोग करके एक व्यू बना सकते हैं जिसमें एकाधिक टेबल से डेटा हो। इस अवधारणा को समझने के लिए हम बेस टेबल Student_info और Student_detail का उपयोग कर रहे हैं जिनमें निम्नलिखित डेटा है: mysql> Select * from Student_info;

  1. MySQL से अंतिम 10 रो कैसे चुनें? MySQL से अंतिम 10 रो कैसे चुनें?

    MySQL से अंतिम 10 रो चुनने के लिए, हम SELECT स्टेटमेंट और LIMIT कॉन्सेप्ट के साथ सबक्वेरी का उपयोग कर सकते हैं। निम्न एक उदाहरण है। टेबल बनाना। mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) टेबल में रिकॉर