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

प्रति सरणी प्रविष्टि में एक पंक्ति उत्सर्जित करने के लिए एक सरणी के साथ संबंध को समतल करना

हम सेट-रिटर्निंग फ़ंक्शन unnest() SELECT . में सूची जैसे राफेल सुझाता है . यह पोस्टग्रेज 10 से पहले कॉर्नर केस की समस्याओं को प्रदर्शित करता था। देखें:

पोस्टग्रेज 9.3 के बाद से हम का भी उपयोग कर सकते हैं LATERAL इसके लिए शामिल हों। यह सेट-रिटर्निंग फ़ंक्शंस को FROM . में डालने का क्लीनर, मानक-अनुपालन वाला तरीका है सूची में नहीं, SELECT . में सूची:

SELECT name, value
FROM   tbl, unnest(values) value;  -- implicit CROSS JOIN LATERAL

एक सूक्ष्म अंतर:यह खाली / NULL values के साथ पंक्तियों को छोड़ देता है परिणाम से unnest() . के बाद से रिटर्न कोई पंक्ति नहीं , जबकि इसे FROM . में NULL मान में बदल दिया जाता है सूची और वैसे भी लौटा। 100% समकक्ष क्वेरी है:

SELECT t.name, v.value
FROM   tbl t
LEFT   JOIN unnest(t.values) v(value) ON true;

देखें:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कई इंडेक्स को मिलाकर पोस्टग्रेज करता है

  2. Windows पर PostgreSQL ODBC सेट करना

  3. मेरी पसंदीदा पोस्टग्रेएसक्यूएल क्वेरीज़ और वे क्यों मायने रखती हैं

  4. रेल ActiveRecord:jsonb पर दोहरे उद्धरण चिह्नों के साथ बाइंड चर का उपयोग कैसे करें?

  5. PostgreSQL में कॉलम और पंक्तियों को कैसे स्थानांतरित करें (यानी, मैं पंक्तियों और स्तंभों को कैसे स्विच करूं)?