PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Dynamische UNION ALL-Abfrage in Postgres

Dies sind nur allgemeine Richtlinien, an denen Sie im Detail arbeiten müssen, insbesondere an der Syntax.

Sie müssen eine Speicherprozedur erstellen

Erstellen Sie eine Schleife, die information_schema.tables überprüft nach den gewünschten Tabellennamen filtern

DECLARE    
    rec record;
    strSQL text;
BEGIN

Erstellen Sie dann mit jeder Tabelle eine strSQL

 FOR rec IN SELECT table_schema, table_name
            FROM information_schema.tables                
 LOOP
     strSQL := strSQL || 'SELECT ogc_fid, wkb_geometry FROM ' || 
               rec.table_schema || '.' || rec.table_name || ' UNION ';
 END LOOP;

-- have to remove the last ' UNION ' from strSQL    

strSQL := 'SELECT  row_number() over (ORDER BY a.ogc_fid) AS qid,
         a.wkb_geometry AS geometry FROM (' || strSQL || ')';

EXECUTE strSQL;