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

PostgreSQL में एक json सरणी से एक अद्वितीय संख्या वाले तत्व कैसे प्राप्त करें?

JOIN LATERAL के साथ एक अलग, साफ तरीका आजमाएं :

select b.id, t.rn
     , t.account->>'name' AS name
     , t.account->>'balance' AS balance
FROM   bank_accounts b
LEFT   JOIN LATERAL jsonb_array_elements(b.bank_accounts)
                    WITH ORDINALITY AS t (account, rn) ON true;

यदि आप bank_accounts . में रिक्त या शून्य मानों वाली पंक्तियों की परवाह नहीं करते हैं, तो , एक आसान CROSS JOIN का उपयोग करें :

select b.id, t.rn
     , t.account->>'name' AS name
     , t.account->>'balance' AS balance
FROM   bank_accounts b
     , jsonb_array_elements(b.bank_accounts) WITH ORDINALITY AS t (account, rn);

आपकी समस्या का मुख्य तत्व है WITH ORDINALITY जो सेट-रिटर्निंग फ़ंक्शंस के लिए फ्लाई पर पंक्ति संख्या उत्पन्न करता है। इसे Postgres 9.4 के साथ पेश किया गया था - आपके लिए काम करता है, jsonb 9.4 के साथ भी पेश किया गया था।

वे प्रति अंतर्निहित पंक्ति अद्वितीय हैं। संपूर्ण तालिका में अद्वितीय होने के लिए, id जोड़ें अंतर्निहित तालिका का।

WITH ORDINALITY . के लिए विवरण :

संबंधित:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में आंकड़े लक्ष्य जांचें

  2. क्या PostgreSQL डेटाबेस में दशमलव क्षेत्रों के लिए अंकों के बजाय अल्पविरामों को संग्रहीत करना संभव है?

  3. एक ही फ्लास्क-SQLAlchemy मॉडल के साथ कई POSTGRES डेटाबेस और स्कीमा का उपयोग करना

  4. किसी भूमिका के लिए डेटाबेस को पोस्टग्रेज़ करने के लिए एक्सेस निरस्त करें

  5. रेल - वस्तुओं की वस्तुओं को डुप्लिकेट के साथ प्राप्त करें