यह इस तरह के unnest के बारे में नहीं है, लेकिन PostgreSQL के SELECT
में कई सेट-रिटर्निंग फ़ंक्शंस के बहुत ही अजीब हैंडलिंग के बारे में है। सूची। SELECT
. में सेट-रिटर्न फ़ंक्शन एएनएसआई एसक्यूएल मानक का हिस्सा नहीं हैं।
LATERAL
. के साथ आप व्यवहार को अधिक स्वच्छ पाएंगे क्वेरी, जिन्हें FROM
. में सेट-रिटर्निंग फ़ंक्शन का उपयोग करने पर प्राथमिकता दी जानी चाहिए जितना हो सके:
select a, b FROM unnest(array[1,2]) a, LATERAL unnest(array[1,2,3]) b;
उदा.
regress=> select a, b FROM unnest(array[1,2]) a, LATERAL unnest(array[1,2,3]) b;
a | b
---+---
1 | 1
1 | 2
1 | 3
2 | 1
2 | 2
2 | 3
(6 rows)
केवल एक बार जब मैं अभी भी कई सेट-रिटर्निंग फ़ंक्शंस का उपयोग करता हूं SELECT
जब मैं उन कार्यों से मूल्यों को जोड़ना चाहता हूं जो दोनों पंक्तियों की समान संख्या लौटाते हैं। बहु-तर्क unnest
. के साथ 9.4 में इसकी आवश्यकता समाप्त हो जाएगी और WITH ORDINALITY
. के समर्थन के साथ ।