PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

SQL (Postgres) में JSON ऑब्जेक्ट्स की सरणी के रूप में लौटें

json_build_object() पोस्टग्रेज 9.4 या नए में

या jsonb_build_object() jsonb लौटाने के लिए ।

SELECT value_two, json_agg(json_build_object('value_three', value_three
                                           , 'value_four' , value_four)) AS value_four
FROM   mytable 
GROUP  BY value_two;

मैनुअल:

<ब्लॉकक्वॉट>

एक विविध तर्क सूची से एक JSON ऑब्जेक्ट बनाता है। परंपरा के अनुसार, तर्क सूची में वैकल्पिक कुंजियाँ और मान होते हैं।

किसी भी संस्करण के लिए (9.3 पोस्ट सहित)

row_to_json() ROW . के साथ अभिव्यक्ति चाल चलेगी:

SELECT value_two
     , json_agg(row_to_json((value_three, value_four))) AS value_four
FROM   mytable
GROUP  BY value_two;

लेकिन आप मूल कॉलम नाम खो देते हैं। एक पंजीकृत पंक्ति प्रकार के लिए एक कलाकार इससे बचता है। (अस्थायी तालिका का पंक्ति प्रकार तदर्थ प्रश्नों के लिए भी कार्य करता है।)

CREATE TYPE foo AS (value_three text, value_four text);  -- once in the same session
SELECT value_two
     , json_agg(row_to_json((value_three, value_four)::foo)) AS value_four
FROM   mytable
GROUP  BY value_two;

या उप-चयन . का उपयोग करें ROW . के बजाय अभिव्यक्ति। अधिक वर्बोज़, लेकिन बिना टाइप कास्ट:

SELECT value_two
     , json_agg(row_to_json((SELECT t FROM (SELECT value_three, value_four) t))) AS value_four
FROM   mytable
GROUP  BY value_two;

क्रेग के संबंधित उत्तर में अधिक स्पष्टीकरण:

  • नेस्टेड जॉइन के साथ PostgreSQL 9.2 row_to_json ()

db<>फिडल यहाँ
पुराना sqlfiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WHERE क्लॉज में एक कॉलम नाम उपनाम का संदर्भ लें

  2. 2019 PostgreSQL रुझान रिपोर्ट:निजी बनाम सार्वजनिक क्लाउड, माइग्रेशन, डेटाबेस संयोजन और उपयोग किए जाने वाले शीर्ष कारण

  3. psql \copy का उपयोग करके टाइमस्टैम्प कॉलम (dd.mm.yyyy hh.mm.ss) के साथ .csv आयात करना

  4. खाली या शून्य मान की जांच करने का सबसे अच्छा तरीका

  5. हटाए गए डॉकर कंटेनर से डेटा कैसे पुनर्प्राप्त करें? इसे डेटा से फिर से कैसे कनेक्ट करें?