U wilt waarschijnlijk CREATE TABLE AS
- werkt ook voor TEMPORARY
(TEMP
) tabellen:
CREATE TEMP TABLE temp1 AS
SELECT dataid
, register_type
, timestamp_localtime
, read_value_avg
FROM rawdata.egauge
WHERE register_type LIKE '%gen%'
ORDER BY dataid, timestamp_localtime;
Hiermee wordt een tijdelijke tabel gemaakt en worden de gegevens erin gekopieerd. Een statische momentopname van de gegevens, let wel. Het is net als een gewone tabel, maar bevindt zich in het RAM als temp_buffers
hoog genoeg is ingesteld. Het is alleen zichtbaar binnen de huidige sessie en sterft aan het einde ervan. Indien aangemaakt met ON COMMIT DROP
het sterft aan het einde van de transactie .
Tijdelijke tabellen komen eerst in het standaard schema-zoekpad , het verbergen van andere zichtbare tabellen met dezelfde naam, tenzij schema-gekwalificeerd:
- Hoe beïnvloedt het zoekpad de resolutie van de ID en het "huidige schema"
Als je dynamisch . wilt , zoek je naar CREATE VIEW
- een heel ander verhaal.
De SQL-standaard definieert ook, en Postgres ondersteunt ook: . Maar het gebruik ervan wordt afgeraden:SELECT INTO
Het is het beste om CREATE TABLE AS
. te gebruiken voor dit doel in nieuwe code.
Er is echt geen behoefte aan een tweede syntaxisvariant, en SELECT INTO
wordt gebruikt voor toewijzing in plpgsql
, waar de SQL-syntaxis bijgevolg niet mogelijk is.
Gerelateerd:
- Combineer twee tabellen tot een nieuwe, zodat geselecteerde rijen uit de andere worden genegeerd
- FOUT:invoerparameters na één met een standaardwaarde moeten ook standaardwaarden hebben in Postgres
CREATE TABLE LIKE (...)
kopieert alleen de structuur uit een andere tabel en geen gegevens:
De LIKE
clausule specificeert een tabel waaruit de nieuwe tabel automatisch alle kolomnamen, hun gegevenstypen en hun niet-null-beperkingen kopieert.
Als u een "tijdelijke" tabel nodig heeft voor een enkele zoekopdracht (en deze vervolgens weggooit), een "afgeleide tabel" in een CTE of een subquery levert aanzienlijk minder overhead op:
- Het uitvoeringsplan van de query in postgresql handmatig wijzigen?
- Combineer twee SELECT-query's in PostgreSQL
- Berekende selectiewaarde opnieuw gebruiken
- Meerdere CTE in één zoekopdracht
- Update met resultaten van een andere sql