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

MySQL में JSON_OBJECTAGG से की-वैल्यू पेयर में रिकॉर्ड दिखाना

JSON_OBJECTAGG() से की-वैल्यू ऑब्जेक्ट बनाना

MySQL 5.7+ में JSON_OBJECTAGG() फंक्शन का उपयोग करके कॉलम वैल्यूज को JSON ऑब्जेक्ट (की-वैल्यू पेयर) में एग्रीगेट कर सकते हैं।

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

CREATE TABLE DemoTable (
    Id INT,
    FirstName VARCHAR(100),
    Age INT
);

INSERT INTO DemoTable VALUES(10, 'John', 23);
INSERT INTO DemoTable VALUES(20, 'Carol', 21);
INSERT INTO DemoTable VALUES(10, 'Sam', 24);
INSERT INTO DemoTable VALUES(20, 'Chris', 20);

मौजूदा डेटा

+------+-----------+------+
| Id   | FirstName | Age  |
+------+-----------+------+
| 10   | John      | 23   |
| 20   | Carol     | 21   |
| 10   | Sam       | 24   |
| 20   | Chris     | 20   |
+------+-----------+------+

क्वेरी: Id के आधार पर ग्रुप करके JSON ऑब्जेक्ट बनाना

SELECT Id, JSON_OBJECTAGG(FirstName, Age) 
FROM DemoTable 
GROUP BY Id;

आउटपुट

+------+-------------------------------+
| Id   | JSON_OBJECTAGG(FirstName,Age) |
+------+-------------------------------+
| 10   | {"Sam": 24, "John": 23}       |
| 20   | {"Carol": 21, "Chris": 20}    |
+------+-------------------------------+

कैसे काम करता है

  • FirstName JSON ऑब्जेक्ट की "की" बनती है
  • Age संबंधित "वैल्यू" बनती है
  • GROUP BY Id प्रत्येक Id के लिए अलग JSON ऑब्जेक्ट बनाता है
  • डुप्लीकेट की होने पर आखिरी मान रखा जाता है

संबंधित JSON फंक्शन्स

-- सिंपल JSON ऑब्जेक्ट बनाना
SELECT JSON_OBJECT('name', 'John', 'age', 25);
-- {"name": "John", "age": 25}

-- JSON ऐरे बनाना
SELECT JSON_ARRAYAGG(FirstName) FROM DemoTable GROUP BY Id;
-- ["John", "Sam"] या ["Carol", "Chris"]

-- JSON से वैल्यू निकालना
SELECT JSON_EXTRACT(json_col, '$.John') FROM table_name;

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

  • API रिस्पॉन्स के लिए डेटा फॉर्मेट करना
  • डायनामिक एट्रिब्यूट्स स्टोर करना
  • नोएसक्यूएल-स्टाइल डेटा रिलेशनल टेबल में रखना
  • रिपोर्टिंग के लिए पिवट टेबल जैसा आउटपुट

ध्यान दें

MySQL 5.7.22+ में उपलब्ध। पुराने वर्जन में CONCAT और GROUP_CONCAT से मैन्युअल JSON बनाना पड़ता था।

  1. - MySQL में IF() से NULL मानों के आधार पर कस्टम टेक्स्ट कैसे दिखाएं?

    MySQL में किसी कॉलम के NULL मानों के आधार पर कस्टम टेक्स्ट प्रदर्शित करने के लिए IF() फंक्शन (या CASE) का उपयोग करें। यह रिपोर्टिंग, UI डिस्प्ले, और डेटा एक्सपोर्ट में Not Found जैसे संदेश दिखाने के लिए उपयोगी है। उदाहरण: StudentName NULL होने पर कस्टम संदेश डेमो टेबल बनाएं: mysql> CREATE TABL

  1. - MySQL में GROUP BY से तारीखों के अनुसार रिकॉर्ड समूहित करें

    GROUP BY से ग्राहकवार न्यूनतम और अधिकतम शिपिंग तारीख प्राप्त करें ग्राहक नाम के अनुसार तारीखों को समूहित करके प्रत्येक ग्राहक की पहली और अंतिम शिपिंग तारीख पाएं। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable2002 ( CustomerName varchar(20), CustomerShippingDate datetime ); Query OK, 0 ro

  1. - MySQL में TRUE/FALSE रिकॉर्ड को 0/1 के रूप में प्रदर्शित करें

    समाधान कॉलम को BOOLEAN (TINYINT(1) का पर्याय) के रूप में परिभाषित करें। उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2035 (Name, isMarried) VALUES (Chris, TRUE), (David, FALSE), (Bob, TRUE), (Mike, FALSE); परिणाम +----+-------+-----------+ | Id | Name | isMarried | +----+-------+----