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

पोस्टग्रेज json_agg में कॉलम हेडर शामिल है - गलत JSON?

यह सही JSON इस अर्थ में है कि यह मान्य है, लेकिन यह स्पष्ट रूप से वह नहीं है जो आप चाहते हैं। तो उत्तर "सही" की परिभाषा पर निर्भर करता है। हम मान लेंगे कि आप जो चाहते हैं वह "सही" है।

आप इसे u . एकत्र करने के लिए कह रहे हैं , जो कॉलम team . के साथ एक परिणाम सेट है . इसका मतलब है कि उसे इस जानकारी को परिणाम में जोड़ना होगा। आपको केवल u.team . के एकत्रीकरण के लिए कहना चाहिए , वह क्षेत्र जो आप चाहते हैं। तब आपको मनचाहा परिणाम मिलेगा।

WITH matches as
(
select 5 as id, '{"Id":1,"Teams":[{"Name":"TeamA","Players":[{"Name":"AAA"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"CCC"},{"Name":"DDD"}]}],"TeamRank":[1,2]}'::json as match
union all
select 6 as id, '{"Id":2,"Teams":[{"Name":"TeamA","Players":[{"Name":"CCC"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"AAA"},{"Name":"DDD"}]}],"TeamRank":[1,2]}' as match
)
SELECT json_agg(u.team) FROM (
SELECT DISTINCT ON (t.team->>'Name') t.team
FROM   matches m, json_array_elements(m.match->'Teams') t(team)
ORDER  BY t.team->>'Name', m.id DESC) AS u;

परिणाम:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अलग लेनदेन में INSERT ट्रिगर के बाद?

  2. 'org.postgresql.util.PSQLException:पैरामीटर 1 के लिए कोई मान निर्दिष्ट नहीं' से कैसे निपटें?

  3. PostgreSQL स्ट्रीमिंग बनाम तार्किक प्रतिकृति – तुलना

  4. एक tsvector में प्रत्येक तत्व पर Levenshtein फ़ंक्शन का उपयोग करना?

  5. Grib2 से PostGIS रेखापुंज - किसी को भी यह काम करने के लिए मिलता है?