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

MySQL में GROUP_CONCAT का उपयोग करके ग्रुप के सभी आइटम एक रिकॉर्ड में कैसे दिखाएं?

GROUP_CONCAT() फंक्शन का उपयोग

MySQL में GROUP_CONCAT() फंक्शन ग्रुप की सभी पंक्तियों के मानों को एक स्ट्रिंग में जोड़ देता है, जिससे एक ग्रुप की सभी जानकारी एक ही पंक्ति में दिखाई देती है।

सिंटैक्स

SELECT groupColumn, GROUP_CONCAT(concatColumn [SEPARATOR ',']) 
FROM yourTableName 
GROUP BY groupColumn;

उदाहरण

1. टेबल बनाना

mysql> CREATE TABLE DemoTable (
    ProductId INT,
    ProductName VARCHAR(40),
    ProductCategory VARCHAR(40)
);
Query OK, 0 rows affected (0.67 sec)

2. डेटा डालना

mysql> INSERT INTO DemoTable VALUES(100, 'Product-1', '1Product');
mysql> INSERT INTO DemoTable VALUES(101, 'Product-2', '2Product');
mysql> INSERT INTO DemoTable VALUES(100, 'Product-1', '3Product');

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

mysql> SELECT * FROM DemoTable;
+-----------+-------------+-----------------+
| ProductId | ProductName | ProductCategory |
+-----------+-------------+-----------------+
| 100       | Product-1   | 1Product        |
| 101       | Product-2   | 2Product        |
| 100       | Product-1   | 3Product        |
+-----------+-------------+-----------------+
3 rows in set (0.00 sec)

4. ग्रुप द्वारा कनेक्ट करना

mysql> SELECT ProductId, GROUP_CONCAT(ProductCategory) AS `GROUP` 
    FROM DemoTable GROUP BY ProductId;
+-----------+-------------------+
| ProductId | GROUP             |
+-----------+-------------------+
| 100       | 1Product,3Product |
| 101       | 2Product          |
+-----------+-------------------+
2 rows in set (0.00 sec)

उन्नत विकल्प

कस्टम सेपरेटर

SELECT ProductId, GROUP_CONCAT(ProductCategory SEPARATOR ' | ') AS Categories
FROM DemoTable GROUP BY ProductId;
+-----------+----------------------+
| ProductId | Categories           |
+-----------+----------------------+
| 100       | 1Product | 3Product |
| 101       | 2Product             |
+-----------+----------------------+

क्रमबद्ध करके कनेक्ट करना

SELECT ProductId, GROUP_CONCAT(ProductCategory ORDER BY ProductCategory DESC) AS Categories
FROM DemoTable GROUP BY ProductId;

डुप्लिकेट हटाकर (DISTINCT)

SELECT ProductId, GROUP_CONCAT(DISTINCT ProductCategory) AS Categories
FROM DemoTable GROUP BY ProductId;

लंबाई सीमा बढ़ाना (डिफ़ॉल्ट 1024 बाइट)

SET SESSION group_concat_max_len = 10000;
SELECT ProductId, GROUP_CONCAT(ProductCategory) FROM DemoTable GROUP BY ProductId;

उपयोग के मामले

  • ई-कॉमर्स: एक ऑर्डर के सभी उत्पाद एक पंक्ति में
  • रिपोर्टिंग: छात्र के सभी विषय एक पंक्ति में
  • टैग सिस्टम: पोस्ट के सभी टैग कॉमा-सेपरेटेड
  • श्रेणीबद्ध डेटा निर्यात

सीमाएं

  • डिफ़ॉल्ट अधिकतम लंबाई 1024 बाइट (group_concat_max_len सिस्टम वेरिएबल)
  • NULL मान स्वचालित रूप से अनदेखे किए जाते हैं
  • बहुत बड़े परिणाम मेमोरी समस्या पैदा कर सकते हैं
  • ORDER BY के बिना क्रम अनिश्चित होता है
  1. - MySQL में स्ट्रिंग फील्ड में संख्यात्मक वर्णों के आधार पर पंक्तियों को समूहित करें

    स्ट्रिंग फील्ड के साथ शून्य (0) जोड़कर MySQL के निहित प्रकार रूपांतरण का उपयोग करके अग्रणी संख्यात्मक भाग निकालें। टेबल बनाना और डेटा डालना CREATE TABLE DemoTable (StudentId VARCHAR(100)); Query OK, 0 rows affected (0.92 sec) INSERT INTO DemoTable VALUES(9844Bob),(6375DavidMiller),(007),(97474Bo

  1. - MySQL में GROUP_CONCAT से सभी आइटम एक रो में कैसे प्राप्त करें?

    GROUP_CONCAT() से मल्टीपल रो को सिंगल रो में जोड़ना किसी कॉलम के सभी मानों को एक ही रो में, किसी सेपरेटर (जैसे /) से जोड़कर दिखाने के लिए GROUP_CONCAT() फंक्शन का उपयोग करें। टेबल बनाना और डेटा इन्सर्ट करना CREATE TABLE DemoTable1355 (Location TEXT); INSERT INTO DemoTable1355 VALUES(E:); INSERT IN

  1. - MySQL डेटाबेस में सभी टेबल सूचीबद्ध करना

    आइए समझते हैं कि MySQL डेटाबेस में सभी टेबल कैसे सूचीबद्ध करें: एक बार डेटाबेस बन जाने पर, हम निम्न क्वेरी का उपयोग करके किसी विशिष्ट डेटाबेस को एक्सेस और उपयोग कर सकते हैं: क्वेरी mysql> USE databaseName Database changed USE स्टेटमेंट के लिए सेमीकॉलन की आवश्यकता नहीं होती। यह QUIT स्टेटमेंट