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

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

GROUP_CONCAT() से मल्टीपल रो को सिंगल रो में जोड़ना

किसी कॉलम के सभी मानों को एक ही रो में, किसी सेपरेटर (जैसे '/') से जोड़कर दिखाने के लिए GROUP_CONCAT() फंक्शन का उपयोग करें।

टेबल बनाना और डेटा इन्सर्ट करना

CREATE TABLE DemoTable1355 (Location TEXT);

INSERT INTO DemoTable1355 VALUES('E:');
INSERT INTO DemoTable1355 VALUES('AllPrograms');
INSERT INTO DemoTable1355 VALUES('ChatApplicationInJava');
INSERT INTO DemoTable1355 VALUES('MainFolder');

मौजूदा डेटा

+-----------------------+
| Location              |
+-----------------------+
| E:                    |
| AllPrograms           |
| ChatApplicationInJava |
| MainFolder            |
+-----------------------+

क्वेरी: सभी लोकेशन को '/' से जोड़ना

SELECT GROUP_CONCAT(Location SEPARATOR '/') 
FROM DemoTable1355;

आउटपुट

+-------------------------------------------------+
| group_concat(Location separator '/')            |
+-------------------------------------------------+
| E:/AllPrograms/ChatApplicationInJava/MainFolder |
+-------------------------------------------------+

महत्वपूर्ण विकल्प

डिस्टिंक्ट मान (डुप्लीकेट हटाना)

SELECT GROUP_CONCAT(DISTINCT Location SEPARATOR '/') FROM DemoTable1355;

ऑर्डर के साथ

SELECT GROUP_CONCAT(Location ORDER BY Location SEPARATOR '/') FROM DemoTable1355;

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

SET SESSION group_concat_max_len = 1000000;
SELECT GROUP_CONCAT(Location SEPARATOR '/') FROM DemoTable1355;

ग्रुपिंग के साथ उपयोग

SELECT Category, GROUP_CONCAT(ProductName SEPARATOR ', ') 
FROM Products 
GROUP BY Category;

फाइल पाथ बनाने का व्यावहारिक उदाहरण

SELECT GROUP_CONCAT(FolderName ORDER BY Level SEPARATOR '/') AS FullPath
FROM FolderHierarchy 
WHERE RootId = 1;

चेतावनी

  • परिणाम group_concat_max_len से लंबा होने पर कट जाता है (साइलेंटली)
  • बहुत बड़े डेटासेट के लिए मेमोरी समस्या हो सकती है
  • JSON_ARRAYAGG() (MySQL 5.7+) ऐरे फॉर्मेट में बेहतर विकल्प हो सकता है
  1. - MySQL में सभी कॉलम मानों को कॉमा से अलग करके एक ही पंक्ति में प्रदर्शित करें?

    इसके लिए GROUP_CONCAT() और CONCAT() का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1807 ( Id int ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1807 values(101); Query OK, 1 row affected

  1. - MySQL में DISTINCT से डुप्लिकेट पंक्तियों में से एक पंक्ति दिखाएं

    DISTINCT कीवर्ड से अद्वितीय पंक्तियां प्राप्त करें पूरी पंक्ति के डुप्लिकेट को हटाकर केवल अद्वितीय पंक्तियां प्राप्त करने के लिए SELECT DISTINCT * का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1998 ( Name varchar(20) ); Query OK, 0 rows affected (0.61 sec) mysql> insert

  1. - MySQL में एक क्वेरी में सभी कॉलम नामों के लिए उपनाम (alias) कैसे सेट करें

    सिंटैक्स SELECT yourColumnName1 AS aliasName1, yourColumnName2 AS aliasName2 FROM yourTableName AS tableAlias; उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2014 VALUES (Chris, Brown); उपनाम के साथ क्वेरी FROM DemoTable2014 tbl; परिणाम +------------------+-----------------+ | Studen