हम सेट-रिटर्निंग फ़ंक्शन 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;
देखें: