PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara UNION daftar tabel yang diambil dari tabel lain dengan satu permintaan?

Untuk mengotomatisasi ini, Anda memerlukan SQL dinamis

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$;

Telepon:

SELECT * FROM f_multi_select();

Dengan asumsi bahwa semua tabel memiliki tipe baris yang sama - jadi kita dapat memilih salah satu untuk menentukan tipe kembalian fungsi.

Saya memasukkan subquery dengan ORDER BY - jika urutan tabel bermakna.

Terkait:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pemilihan baris acak cepat di Postgres

  2. PostgreSQL mengonversi kolom menjadi baris? Mengubah urutan?

  3. Setelah saya mengaktifkan model di Django, mengapa saya tidak bisa menanyakannya langsung di postgresql pgAdmin UI?

  4. Bagaimana cara mendapatkan posisi kecocokan regexp dalam string di PostgreSQL?

  5. SQL beberapa UNNEST dalam daftar pilih tunggal