SELECT INTO() SQL Commands SELECT INTO() NAME SELECT INTO - define 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 | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] ] 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 similar 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 inter- pret the INTO clause differently. Furthermore, CREATE TABLE AS offers a superset of the functionality provided by SELECT INTO. Prior to PostgreSQL 8.1, the table created by SELECT INTO included OIDs by default. In PostgreSQL 8.1, this is not the case -- to include OIDs in the new table, the default_with_oids configuration variable must be enabled. Alternatively, CREATE TABLE AS can be used with the WITH OIDS clause. EXAMPLES Create a new table films_recent consisting of only recent entries from the table films: SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01'; 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 the documentation) and PL/pgSQL (see the documentation). The PostgreSQL usage of SELECT INTO to represent table creation is historical. It is best to use CREATE TA- BLE AS for this purpose in new code. SEE ALSO CREATE TABLE AS [create_table_as(7)] SQL - Language Statements 2010-12-14 SELECT INTO() |