आप unnest calling को कॉल कर रहे हैं FROM . पर 3 बार क्लॉज, इसका मतलब है कि आप CROSS JOIN कर रहे हैं (कार्टेशियन उत्पाद) 3.
यदि आप PostgreSQL 9.4 या उच्चतर पर हैं, तो आप unnest . की एक कॉल सरल कर सकते हैं प्रत्येक सरणी को इनपुट के रूप में देना:
select * from
unnest(
array['2001622', '2001624', '2007903'],
array[15,14,8],
array['type1', 'type1', 'type1'],
array[false, true, true]
) as u(id, ver, type, enabled)
एक अन्य विकल्प, किसी भी संस्करण के लिए, कॉल को unnest . में जोड़ना है में SELECT FROM . के बजाय :
select
unnest(array['2001622', '2001624', '2007903']) as id,
unnest(array[15,14,8]) as ver,
unnest(array['type1', 'type1', 'type1']) as type,
unnest(array[false, true, true]) as enabled
दोनों ही मामलों में, लेकिन विशेष रूप से आखिरी पर, आपको यह सुनिश्चित करना चाहिए कि प्रत्येक सरणी में तत्वों की समान संख्या हो। यदि यह पहली विधि पर नहीं है तो प्रत्येक लापता पंक्ति को NULL के रूप में भर दिया जाएगा, लेकिन दूसरी यह उतनी ही पंक्तियाँ लौटाएगी जितनी कि LCM प्रत्येक द्वारा लौटाई गई पंक्तियों की संख्या, जो आप शायद नहीं चाहते हैं। उदाहरण:
SELECT * FROM unnest(array[1,2,3,4], array['a','b','c','d','e','f']);
unnest | unnest
--------+--------
1 | a
2 | b
3 | c
4 | d
[null] | e
[null] | f
(6 rows)
SELECT unnest(array[1,2,3,4]), unnest(array['a','b','c','d','e','f']);
unnest | unnest
--------+--------
1 | a
2 | b
3 | c
4 | d
1 | e
2 | f
3 | a
4 | b
1 | c
2 | d
3 | e
4 | f
(12 rows)
टेबल फंक्शन कॉल्सपर दस्तावेज़ देखें। ए> अधिक जानकारी के लिए।