हां, यह पोस्टग्रेज की एक विशेषता है और समानांतर अननेस्टिंग गारंटीकृत है सिंक में रहने के लिए (जब तक सभी सरणियों में तत्वों की संख्या समान होती है)।
पोस्टग्रेज 9.4 समानांतर अननेस्ट के लिए एक स्वच्छ समाधान जोड़ता है:
- समानांतर में कई सरणियों को अननेस्ट करें
परिणामी पंक्तियों के क्रम की गारंटी नहीं है, हालाँकि। वास्तव में, एक सरल कथन के साथ:
SELECT unnest(ARRAY[5,3,9]) AS id
पंक्तियों का परिणामी क्रम "गारंटीकृत" है, लेकिन पोस्टग्रेस कुछ भी दावा नहीं करता है। क्वेरी ऑप्टिमाइज़र पंक्तियों को ऑर्डर करने के लिए स्वतंत्र है क्योंकि यह तब तक फिट दिखता है जब तक ऑर्डर स्पष्ट रूप से परिभाषित नहीं होता है। अधिक जटिल प्रश्नों में इसका दुष्प्रभाव हो सकता है।
यदि आपके प्रश्न में दूसरी क्वेरी वह है जो आप वास्तव में चाहते हैं (अननेस्टेड सरणी तत्वों में एक अनुक्रमणिका संख्या जोड़ें), तो generate_subscripts() के साथ एक बेहतर तरीका है :
SELECT unnest(ARRAY[5,3,9]) AS id
, generate_subscripts(ARRAY[5,3,9], 1) AS idx
ORDER BY idx;
इस संबंधित उत्तर में विवरण:
- postgreSQL के साथ सरणी आंतरिक अनुक्रमणिका तक कैसे पहुँचें?
आपकी रुचि WITH ORDINALITY
. में होगी पोस्टग्रेज में 9.4 :
- तत्व संख्या के साथ PostgreSQL unnest()
तब आप इसका उपयोग कर सकते हैं:
SELECT * FROM unnest(ARRAY[5,3,9]) WITH ORDINALITY tbl(id, idx);