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

एक ही प्रश्न के साथ किसी अन्य तालिका से पुनर्प्राप्त तालिकाओं की सूची यूनियन कैसे करें?

इसे स्वचालित करने के लिए, आपको गतिशील SQL की आवश्यकता है

CREATE OR REPLACE FUNCTION f_multi_select()
  RETURNS SETOF table1
  LANGUAGE plpgsql AS
$func$
BEGIN
   RETURN QUERY EXECUTE
   (
   SELECT string_agg(format('SELECT * FROM %I', tbl), ' UNION ALL ')
   FROM   (SELECT tbl FROM tablenames ORDER BY id) sub
   );
END
$func$;

कॉल करें:

SELECT * FROM f_multi_select();

यह मानते हुए कि सभी तालिकाएँ समान पंक्ति प्रकार साझा करती हैं - इसलिए हम फ़ंक्शन के रिटर्न प्रकार को परिभाषित करने के लिए कोई भी चुन सकते हैं।

मैंने ORDER BY . के साथ एक सबक्वायरी में फेंक दिया - यदि तालिकाओं का क्रम सार्थक हो।

संबंधित:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL से R . में फ़ाइलें आयात करना

  2. PostgreSQL में AT TIME ZONE कैसे काम करता है

  3. क्या मुझे INDEX और UNIQUE INDEX दोनों को निर्दिष्ट करना चाहिए?

  4. PostgreSQL:डेटाबेस बैकअप और रिकवरी?

  5. पोस्टग्रेज सांख्यिक प्रकारों पर csv फ़ाइलें आयात करें