त्रुटि संदेश भाग के आधार पर operator does not exist: integer = integer[]
, ऐसा प्रतीत होता है कि bs
कॉलम unnest
होना चाहिए ed, दाहिने हाथ की ओर एक integer
. पर वापस लाने के लिए इसलिए तुलना ऑपरेटर पाया जा सकता है:
WITH bar AS (
SELECT array_agg(b) AS bs
FROM foo
WHERE c < 3
)
SELECT a
FROM foo
WHERE b = ANY ( SELECT unnest(bs) FROM bar);
इसका परिणाम आउटपुट में होता है:
A
2
3
किसी भी फ़ंक्शन के लिए दस्तावेज़ को देखते हुए :
... त्रुटि समझ में आती है, क्योंकि बाएं हाथ की अभिव्यक्ति एक integer
है -- कॉलम b
-- जबकि दाहिने हाथ की अभिव्यक्ति integer
. की एक सरणी है s, या integer[]
, और इसलिए तुलना integer
. के रूप में समाप्त होती है =integer[]
, जिसमें कोई ऑपरेटर नहीं है, और इसलिए त्रुटि होती है।
unnest
integer[]
value बाएँ और दाएँ हाथ के भाव integer
. बनाता है s, और इसलिए तुलना जारी रह सकती है।
संशोधित SQL Fiddle ।
नोट: IN
. का उपयोग करते समय वही व्यवहार देखा जाता है के बजाय = ANY
।