PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Postgresql में पूर्णांक कैसे एकत्रित करें?

अभिव्यक्ति select array_agg(4) पंक्तियों का रिटर्न सेट (वास्तव में 1 पंक्ति वाली पंक्तियों का सेट)। इसलिए क्वेरी

select *
from b
where b.id = any (select array_agg(4))  -- ERROR

एक पूर्णांक (b.id) की तुलना एक पंक्ति के मान से करने की कोशिश करता है (जिसमें 1 कॉलम प्रकार पूर्णांक [] है)। यह एक त्रुटि उत्पन्न करता है।

इसे ठीक करने के लिए आपको एक सबक्वेरी का उपयोग करना चाहिए जो पूर्णांक देता है (पूर्णांकों की सरणियाँ नहीं):

select *
from b
where b.id = any (select unnest(array_agg(4)))

वैकल्पिक रूप से, आप select array_agg(4) . के परिणाम का कॉलम नाम रख सकते हैं any . के तर्क के रूप में , उदा.:

select *
from b
cross join (select array_agg(4)) agg(arr)
where b.id = any (arr)

या

with agg as (
    select array_agg(4) as arr)
select *
    from b
    cross join agg
    where b.id = any (arr)

अधिक औपचारिक रूप से, पहले दो प्रश्न ANY . का उपयोग करते हैं फ़ॉर्म का:

expression operator ANY (subquery)

और अन्य दो उपयोग

expression operator ANY (array expression)

जैसा कि दस्तावेज़ीकरण में वर्णित है:9.22.4। कोई/कुछ और 9.23.3. कोई/कुछ (सरणी)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या पोस्टग्रेज अपडेट पर पूरी पंक्ति को फिर से लिखता है?

  2. पोस्टग्रेज 9.4 . में JSON -> JSONB कॉलम रूपांतरण मोटे तौर पर कितना तेज़ है

  3. कुछ कॉलम द्वारा ऑर्डर की गई पंक्तियों का चयन करना और दूसरे पर अलग करना

  4. रेल 3.1। Heroku PGError:ऑपरेटर मौजूद नहीं है:वर्ण भिन्न =पूर्णांक

  5. PostgreSQL array_agg(INTEGER[])