select_into
SELECT INTO() SQL Commands SELECT INTO()
NAME
SELECT INTO - create a new table from the results of a query
SYNOPSIS
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
* | expression [ AS output_name ] [, ...]
INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
[ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]
[ LIMIT { count | ALL } ]
[ OFFSET start ]
[ FOR UPDATE [ OF tablename [, ...] ] ]
DESCRIPTION
SELECT INTO creates a new table and fills it with data computed by a
query. The data is not returned to the client, as it is with a normal
SELECT. The new table’s columns have the names and data types associ-
ated with the output columns of the SELECT.
PARAMETERS
TEMPORARY or TEMP
If specified, the table is created as a temporary table. Refer
to CREATE TABLE [create_table(7)] for details.
new_table
The name (optionally schema-qualified) of the table to be cre-
ated.
All other parameters are described in detail under SELECT [select(7)].
NOTES
CREATE TABLE AS [create_table_as(7)] is functionally equivalent to
SELECT INTO. CREATE TABLE AS is the recommended syntax, since this
form of SELECT INTO is not available in ECPG or PL/pgSQL, because they
interpret the INTO clause differently.
COMPATIBILITY
The SQL standard uses SELECT ... INTO to represent selecting values
into scalar variables of a host program, rather than creating a new
table. This indeed is the usage found in ECPG (see [XRef to ECPG]) and
PL/pgSQL (see [XRef to PLPGSQL]). The PostgreSQL usage of SELECT INTO
to represent table creation is historical. It’s best to use CREATE TA-
BLE AS for this purpose in new code. (CREATE TABLE AS isn’t standard
either, but it’s less likely to cause confusion.)
SQL - Language Statements 2008-01-03 SELECT INTO()