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

MySQL में GROUP_CONCAT और CASE से अलग शर्तों वाले समान कॉलम के मान जोड़ें

एक ही कॉलम (Name) की अलग-अलग शर्तों (Subject) के मानों को जोड़ने के लिए CASE के साथ सशर्त एग्रीगेशन और CONCAT या GROUP_CONCAT का उपयोग करें।

टेबल बनाएं

mysql> CREATE TABLE DemoTable1869 (
    Id INT, Subject VARCHAR(20), Name VARCHAR(20)
);

डेटा डालें

mysql> INSERT INTO DemoTable1869 VALUES(100, 'MySQL', 'John'), (100, 'MongoDB', 'Smith'), (101, 'MySQL', 'Chris'), (101, 'MongoDB', 'Brown');

प्रति Id MySQL और MongoDB नाम जोड़ें

mysql> SELECT Id,
    CONCAT(
        MAX(CASE WHEN Subject = 'MySQL' THEN Name END),
        '',
        MAX(CASE WHEN Subject = 'MongoDB' THEN Name END)
    ) AS FullName
    FROM DemoTable1869
    GROUP BY Id;

आउटपुट:

+------+-------------+
| Id   | FullName    |
+------+-------------+
|  100 | JohnSmith   |
|  101 | ChrisBrown  |
+------+-------------+

व्याख्या

  • CASE WHEN Subject='MySQL' THEN Name END → MySQL पंक्ति का नाम, अन्यथा NULL।
  • MAX(...) → NULL को अनदेखा करके एकमात्र गैर-NULL मान चुनता है।
  • CONCAT(...) → दोनों जोड़ता है।

GROUP_CONCAT विकल्प (क्रम महत्वपूर्ण होने पर)

SELECT Id,
    GROUP_CONCAT(Name ORDER BY Subject SEPARATOR '') AS FullName
FROM DemoTable1869
GROUP BY Id;

यह Subject वर्णमाला क्रम (MongoDB, MySQL) से जोड़ता है। कस्टम क्रम के लिए:

GROUP_CONCAT(Name ORDER BY FIELD(Subject, 'MySQL', 'MongoDB') SEPARATOR '')

पिवट/क्रॉसटैब पैटर्न

यह तकनीक "पंक्तियों को कॉलम में बदलने" (पिवट) के लिए सामान्य है।

  1. - MySQL में CASE WHEN और SUM से शर्ती गिनती को अलग कॉलम में प्रदर्शित करें (पिवट)

    MySQL में शर्तों के आधार पर गिनती करके परिणाम को अलग-अलग कॉलम में प्रदर्शित करने (पिवट/क्रॉस-टैब) के लिए SUM(CASE WHEN ... THEN 1 ELSE 0 END) पैटर्न का उपयोग करें। यह GROUP BY के साथ संयोजित करके पंक्तियों को कॉलम में बदल देता है। सिंटैक्स SELECT group_column, SUM(CASE WHEN condition1 THEN

  1. - MySQL में कॉलम मानों को अलग टेक्स्ट के साथ जोड़ें और एकल कॉलम में प्रदर्शित करें

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (0.93 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(101,Chris); Query OK, 1 row affected (0.25 sec) mysq

  1. - MySQL में CASE स्टेटमेंट का उपयोग करके Amount कॉलम से एक ही कीमत के दो अलग-अलग योग कैसे प्रदर्शित करें?

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