SELECT INTO

Name

SELECT INTO -- erzeugt eine neue Tabelle aus den Ergebnissen einer Anfrage

Synopsis

SELECT [ ALL | DISTINCT [ ON ( ausdruck [, ...] ) ] ]
    * | ausdruck [ AS name ] [, ...]
    INTO [ TEMPORARY | TEMP ] [ TABLE ] neue_tabelle
    [ FROM from_element [, ...] ]
    [ WHERE bedingung ]
    [ GROUP BY ausdruck [, ...] ]
    [ HAVING bedingung [, ...] ]
    [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
    [ ORDER BY ausdruck [ ASC | DESC | USING operator ] [, ...] ]
    [ LIMIT { anzahl | ALL } ]
    [ OFFSET start ]
    [ FOR UPDATE [ OF tabellenname [, ...] ] ]

Beschreibung

SELECT INTO erzeugt eine neue Tabelle und füllt sie mit den von einer Anfrage berechneten Daten. Die Daten werden nicht wie bei einem normalen SELECT an den Client zurückgegeben. Die Tabellenspalten haben die gleichen Namen und Datentypen wie das Ergebnis des SELECT.

Parameter

TEMPORARY oder TEMP

Wenn angegeben, dann wird die Tabelle als temporäre Tabelle erzeugt. Weitere Einzelheiten dazu finden Sie bei CREATE TABLE.

neue_tabelle

Der Name der zu erzeugenden Tabelle (möglicherweise mit Schemaqualifikation).

Alle weiteren Parameter sind im Einzelnen unter SELECT beschrieben.

Meldungen

Eine Zusammenfassung der möglichen Meldungen erhalten Sie unter CREATE TABLE und SELECT.

Hinweise

CREATE TABLE AS hat die gleiche Funktionalität wie SELECT INTO. CREATE TABLE AS ist die empfohlene Syntax, weil diese Form von SELECT INTO nicht in ECPG und PL/pgSQL funktioniert, da dort die INTO-Klausel eine andere Bedeutung hat.

Kompatibilität

Der SQL-Standard verwendet SELECT ... INTO um die ausgewählten Werte in skalaren Variablen in einem Hostprogramm abzulegen. Diese Verwendung findet sich auch in ECPG (siehe Kapitel 30) und PL/pgSQL (siehe Kapitel 38). Die Verwendung von SELECT INTO in PostgreSQL um Tabellen zu erzeugen ist historisch bedingt. Am besten verwendet man dafür CREATE TABLE AS. (CREATE TABLE AS entspricht auch nicht dem SQL-Standard, aber es erzeugt wohl am wenigsten Verwirrung.)