Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में एकाधिक पंक्तियों को एक कॉलम में कैसे संयोजित करें

कभी-कभी आपको कई पंक्तियों को एक कॉलम में संयोजित करने की आवश्यकता हो सकती है। यहां GROUP_CONCAT फ़ंक्शन का उपयोग करके MySQL में एकाधिक पंक्तियों को एक कॉलम में संयोजित करने का तरीका बताया गया है। आप इसका उपयोग पंक्तियों को स्ट्रिंग में संयोजित करने के लिए भी कर सकते हैं, या MySQL में एकल पंक्ति में एकाधिक पंक्ति डेटा प्राप्त कर सकते हैं।

MySQL में एक से अधिक पंक्तियों को एक कॉलम में कैसे जोड़ें

यहाँ MySQL में एक से अधिक पंक्तियों को एक कॉलम में संयोजित करने के चरण दिए गए हैं।

मान लें कि आपके पास निम्न तालिका बिक्री (sales_rep, बिक्री) है

mysql> create table sales(sales_rep varchar(255),sale int);

mysql> insert into sales(sales_rep, sale) 
       values('Albert',10),('Bob',23),
             ('Chris',20),('Dave',35);

mysql> select * from sales;

+-----------+------+
| sales_rep | sale |
+-----------+------+
| Albert    |   10 |
| Bob       |   23 |
| Chris     |   20 |
| Dave      |   35 |
+-----------+------+

बोनस पढ़ें : MySQL में रनिंग टोटल की गणना कैसे करें

मान लें कि आप उन सभी बिक्री प्रतिनिधियों की रिपोर्ट करना चाहते हैं जिनकी बिक्री>10 निम्न क्वेरी के साथ है।

mysql> select sales_rep from sales where sale>10;

आपको निम्न आउटपुट मिलेगा

+-----------+
| sales_rep |
+-----------+
| Bob       |
| Chris     |
| Dave      |
+-----------+

हालांकि, हम चाहते हैं कि sales_rep नाम एक ही पंक्ति में मौजूद हों।

Bob, Chris, Dave

इस मामले में, हम कई पंक्तियों को एक कॉलम में जोड़ने के लिए GROUP_CONCAT फ़ंक्शन का उपयोग करते हैं।

mysql> select group_concat(sales_rep) from sales2 where sale>10;
+-------------------------+
| group_concat(sales_rep) |
+-------------------------+
| Bob,Chris,Dave          |
+-------------------------+

GROUP_CONCAT एक समूह में सभी गैर-शून्य मानों को जोड़ता है और उन्हें एक स्ट्रिंग के रूप में लौटाता है।

यदि आप डुप्लिकेट से बचना चाहते हैं, तो आप अपनी क्वेरी में DISTINCT भी जोड़ सकते हैं। मान लें कि आपके पास निम्न तालिका है।

mysql> select * from sales3;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

उपरोक्त तालिका में, कॉलम उत्पाद डुप्लिकेट मान शामिल हैं। इसलिए हम केवल अनन्य मान चुनने के लिए DISTINCT कीवर्ड का उपयोग करते हैं।

mysql> select group_concat(distinct product) from sales3 where sale>10;
+--------------------------------+
| group_concat(distinct product) |
+--------------------------------+
| A,B                            |
+--------------------------------+

बोनस पढ़ें: MySQL में कुल पंक्ति कैसे जोड़ें

आप प्रत्येक समूह के लिए पंक्ति मानों को संयोजित करने के लिए GROUP BY फ़ंक्शन का भी उपयोग कर सकते हैं। यहाँ एक उदाहरण है। मान लें कि आपके पास निम्न तालिका है।

mysql> create table sales_reps(product varchar(255),sales_rep varchar(255));

mysql> insert into sales_reps(product, sales_rep) 
       values('A','Albert'),('A','Bob'),('A','Chris'),
             ('B','Dave'),('B','Edgar'),('B','Finch');

mysql> select * from sales_reps;
+---------+-----------+
| product | sales_rep |
+---------+-----------+
| A       | Albert    |
| A       | Bob       |
| A       | Chris     |
| B       | Dave      |
| B       | Edgar     |
| B       | Finch     |
+---------+-----------+

यहां एक क्वेरी है जहां हम ग्रुप बाय क्लॉज का उपयोग करके प्रत्येक उत्पाद के लिए प्रतिनिधि नामों को जोड़ते हैं।

mysql> select product, group_concat(sales_rep) from sales_reps group by product;
+---------+-------------------------+
| product | group_concat(sales_rep) |
+---------+-------------------------+
| A       | Albert,Bob,Chris        |
| B       | Dave,Edgar,Finch        |
+---------+-------------------------+

एक से अधिक पंक्तियों को एक कॉलम में संयोजित करने के बाद, आप एक तालिका में परिणाम प्लॉट करने और उन्हें अपनी टीम के साथ साझा करने के लिए रिपोर्टिंग टूल का उपयोग कर सकते हैं। यहां Ubiq का उपयोग करके बनाई गई तालिका का एक उदाहरण दिया गया है।

वैसे, यदि आप MySQL डेटाबेस से चार्ट, डैशबोर्ड और रिपोर्ट बनाना चाहते हैं, तो आप Ubiq को आज़मा सकते हैं। हम 14-दिन का निःशुल्क परीक्षण प्रदान करते हैं।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शामिल हों बनाम उप-क्वेरी

  2. मैं एक पूरी पंक्ति का चयन कैसे करूं जिसमें तालिका में सबसे बड़ी आईडी है?

  3. mySQL वर्चर को तारीख में बदलें

  4. MySQL PHP असंगति

  5. आप MySQL डेटाटाइम कॉलम के लिए डिफ़ॉल्ट मान कैसे सेट करते हैं?