sql >> Databasteknik >  >> RDS >> PostgreSQL

Dynamisk UNION ALL-fråga i Postgres

Detta är bara allmänna riktlinjer du behöver arbeta i detaljerna speciellt syntaxis.

Du måste skapa en butiksprocedur

Skapa en loop som kontrollerar information_schema.tables filtrera efter de tabellnamn du vill ha

DECLARE    
    rec record;
    strSQL text;
BEGIN

Skapa sedan en strSQL med varje tabell

 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;


  1. Prestanda för sys.partitioner

  2. PHP mysql-formulär, STICKAT

  3. Livechatt med PHP och jQuery. Var lagrar man information? Mysql eller fil?

  4. PostgreSQL date C# DateTime