sql >> Database >  >> RDS >> PostgreSQL

Dynamische UNION ALL-query in Postgres

Dit zijn slechts algemene richtlijnen, u moet in de details werken, speciaal syntaxis.

U moet een winkelprocedure aanmaken

Maak een lus die information_schema.tables controleert filter voor de gewenste tabelnamen

DECLARE    
    rec record;
    strSQL text;
BEGIN

Maak vervolgens een strSQL met elke tabel

 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. Omgaan met MySQL langlopende zoekopdrachten

  2. DML invoegen met bindingsvariabele:clausule van uitvoering onmiddellijke verklaring GEBRUIKEN

  3. Waarom kan ik via shell verbinding maken met MySQL, maar niet via Python?

  4. Hoe gebruik ik een IF-statement in een MySQL-joinquery?