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

MySQL में GROUP_CONCAT() से कॉलम रिकॉर्ड को सूची में बदलें

MySQL का GROUP_CONCAT() फ़ंक्शन एक ग्रुप के भीतर मानों को जोड़कर एक स्ट्रिंग सूची बनाता है। यह रिपोर्टिंग और डेटा निर्यात के लिए बहुत उपयोगी है।

सिंटैक्स

SELECT कॉलम_नाम, 
    GROUP_CONCAT(अन्य_कॉलम [SEPARATOR 'अलग_करने_वाला_चिन्ह'])
FROM टेबल_नाम
GROUP BY कॉलम_नाम;

उदाहरण: क्लाइंट नामों को कॉमा-सूची में बदलना

1. टेबल बनाएं

mysql> CREATE TABLE DemoTable (
    -> ClientId INT,
    -> ClientName VARCHAR(20)
    -> );

2. डेटा डालें

mysql> INSERT INTO DemoTable VALUES(100, 'Chris');
mysql> INSERT INTO DemoTable VALUES(100, 'Robert');
mysql> INSERT INTO DemoTable VALUES(100, 'Adam');
mysql> INSERT INTO DemoTable VALUES(100, 'David');

3. सभी रिकॉर्ड देखें

mysql> SELECT * FROM DemoTable;
+----------+------------+
| ClientId | ClientName |
+----------+------------+
| 100      | Chris      |
| 100      | Robert     |
| 100      | Adam       |
| 100      | David      |
+----------+------------+

4. GROUP_CONCAT क्वेरी

mysql> SELECT ClientId, 
    -> GROUP_CONCAT(ClientName SEPARATOR ',') 
    -> FROM DemoTable 
    -> GROUP BY ClientId;

5. परिणाम

+----------+----------------------------------------+
| ClientId | group_concat(ClientName separator ',') |
+----------+----------------------------------------+
| 100      | Chris,Robert,Adam,David                |
+----------+----------------------------------------+

उपयोगी विकल्प

  • SEPARATOR: डिफ़ॉल्ट कॉमा (,) है, बदल सकते हैं
  • ORDER BY: GROUP_CONCAT(नाम ORDER BY नाम) से क्रम नियंत्रित करें
  • DISTINCT: GROUP_CONCAT(DISTINCT नाम) से डुप्लिकेट हटाएं
  • LIMIT: MySQL 8.0+ में समर्थित

सीमाएं

डिफ़ॉल्ट अधिकतम लंबाई 1024 बाइट्स है। group_concat_max_len सिस्टम वेरिएबल से बढ़ाएं।

  1. Java में PreparedStatement का उपयोग करके MySQL टेबल में रिकॉर्ड कैसे डालें? Java में PreparedStatement का उपयोग करके MySQL टेबल में रिकॉर्ड कैसे डालें?

    PreparedStatement के साथ पैरामीटराइज़्ड INSERT SQL इंजेक्शन रोकने और प्रदर्शन में सुधार के लिए Java में PreparedStatement का उपयोग करें। प्लेसहोल्डर (?) के साथ SQL लिखें और सेटर मेथड्स से मान बांधें। सिंटैक्स String query = INSERT INTO yourTableName(col1, col2, col3) VALUES (?, ?, ?); PreparedStat

  1. MySQL कमांड लाइन से सभी आरक्षित शब्दों की सूची प्राप्त करना MySQL कमांड लाइन से सभी आरक्षित शब्दों की सूची प्राप्त करना

    MySQL में सभी आरक्षित शब्दों (रिज़र्व्ड कीवर्ड्स) की सूची प्राप्त करने के लिए mysql.help_keyword सिस्टम टेबल को क्वेरी करें। यह जानकारी टेबल/कॉलम नामकरण संघर्ष से बचने के लिए उपयोगी है। सिंटैक्स SELECT * FROM mysql.help_keyword; उदाहरण आउटपुट क्वेरी चलाने पर सभी आरक्षित शब्दों की सूची प्रदर्शित हो

  1. MySQL परिणामों को कैसे मर्ज करें MySQL परिणामों को कैसे मर्ज करें

    समाधान सरल JOIN का उपयोग करके दो टेबल के परिणाम मर्ज करें। सिंटैक्स SELECT alias1.col1, alias1.col2, ..., alias2.col1 FROM table1 alias1 JOIN table2 alias2 ON condition; उदाहरण पहली टेबल: INSERT INTO demo8 VALUES (100, John), (101, Mike), (102, Bob); दूसरी टेबल: INSERT INTO demo9 VALUES (100, 2