के साथ unnest मैं postgreSQL 9.1 का उपयोग करता हूं। मेरे डेटाबेस मेंपोस्टग्रेएसक्यूएल खाली सरणी
id | ... | values
-----------------------
1 | ... | {1,2,3}
2 | ... | {}
जहां आईडी एक पूर्णांक है और मान एक पूर्णांक सरणी है। सरणी खाली हो सकती है।
मुझे इस सूची को अनदेखा करने की आवश्यकता है। अगर मैं
select id, ..., unnest(values)
from table
क्वेरी मैं आईडी के लिए तीन पंक्तियों मिल = 1 (की उम्मीद के रूप में) और आईडी = 2. के लिए कोई लाइनों वहाँ एक रास्ता
id | ... | unnest
-------------------
1 | ... | 1
1 | ... | 2
1 | ... | 3
2 | ... | null
यानी एक प्रश्न की तरह एक परिणाम प्राप्त करने के लिए है जो उन रेखाओं को भी शामिल किया गया है जिनमें खाली सरणी है? कि बड़े तालिकाओं के लिए क्वेरी बुरी तरह से प्रदर्शन किया जाएगा,
SELECT t.id, u.u
FROM tab t
LEFT JOIN (SELECT id, unnest(vals) u FROM tab) u
USING (id);
नोट:
यह पोस्टग्रेस्क्ल 10 –
@ ब्लडिंगफिंगर्स पर काम नहीं करेगा: मेरा अपडेट देखें –