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

क्या MySQL में एक कॉलम से GROUP BY करके सभी डेटा चुन सकते हैं?


GROUP_CONCAT() से ग्रुपिंग के साथ सभी मान प्राप्त करें

MySQL में एक कॉलम से GROUP BY करते समय दूसरे कॉलम के सभी मान प्राप्त करने के लिए GROUP_CONCAT() फंक्शन का उपयोग करें।

उदाहरण

टेबल बनाएं:

mysql> CREATE TABLE groupByOneSelectAll (
    -> StudentDetails VARCHAR(100),
    -> StudentName VARCHAR(100)
    -> );

डेटा इन्सर्ट करें:

mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'John');
mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'Chris');
mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'Robert');
mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'Bob');
mysql> INSERT INTO groupByOneSelectAll VALUES('StudentFirstName', 'David');

सभी रिकॉर्ड:

+------------------+-------------+
| StudentDetails   | StudentName |
+------------------+-------------+
| StudentFirstName | John        |
| StudentFirstName | Chris       |
| StudentFirstName | Robert      |
| StudentFirstName | Bob         |
| StudentFirstName | David       |
+------------------+-------------+

GROUP BY के साथ सभी नाम जोड़ने की क्वेरी

mysql> SELECT StudentDetails, GROUP_CONCAT(StudentName)
    -> FROM groupByOneSelectAll
    -> GROUP BY StudentDetails;

परिणाम:

+------------------+-----------------------------+
| StudentDetails   | GROUP_CONCAT(StudentName)   |
+------------------+-----------------------------+
| StudentFirstName | John,Chris,Robert,Bob,David |
+------------------+-----------------------------+

GROUP_CONCAT विकल्प

-- कस्टम सेपरेटर
GROUP_CONCAT(StudentName SEPARATOR ' | ')

-- सॉर्ट करके जोड़ें
GROUP_CONCAT(StudentName ORDER BY StudentName)

-- अधिकतम लंबाई सीमित करें (डिफ़ॉल्ट 1024)
GROUP_CONCAT(StudentName SEPARATOR ',' LIMIT 1000)

-- संयुक्त
GROUP_CONCAT(DISTINCT StudentName ORDER BY StudentName SEPARATOR ', ')

चेतावनी: डिफ़ॉल्ट रूप से GROUP_CONCAT का परिणाम 1024 अक्षर तक सीमित होता है। SET SESSION group_concat_max_len = 10000; से बढ़ा सकते हैं।

उपयोग केस: रिपोर्टिंग, CSV एक्सपोर्ट, टैग/श्रेणी सूची बनाना।

  1. - MySQL में एग्रीगेट फंक्शन और अन्य सभी कॉलम चुनना

    सबक्वेरी के साथ प्रत्येक पंक्ति पर एग्रीगेट मान दिखाना पहले टेबल बनाएं: create table DemoTable1621 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20), StudentMarks int ); Query OK, 0 rows affected (1.69 sec) रिकॉर्ड डालें: insert into DemoTable1621(StudentName,StudentMark

  1. - MySQL क्वेरी: दो तिथियों की सीमा के बीच सभी डेटा चुनें

    BETWEEN ऑपरेटर का उपयोग करके तिथि सीमा के बीच डेटा चुनना दो तिथियों की सीमा के बीच सभी डेटा चुनने के लिए MySQL BETWEEN का उपयोग करें: select * from yourTableName where yourColumnName between yourDateValue1 and yourDateValue2; पहले टेबल बनाएं: create table DemoTable1422 ( EmployeeId int NOT NULL AUT

  1. - MySQL में IF() से टाइमस्टैम्प कॉलम आधारित बूलियन मान चुनें

    IF(condition, true_val, false_val) का उपयोग करके टाइमस्टैम्प कॉलम की वर्तमान दिनांक से तुलना करके बूलियन (0/1) मान उत्पन्न करें। वर्तमान दिनांक mysql> SELECT CURDATE(); -- 2019-12-10 टेबल बनाएं mysql> CREATE TABLE DemoTable1890 (DueDate TIMESTAMP); डेटा डालें mysql> INSERT INTO DemoTable