Provided by: postgresql-client-8.4_8.4.8-2_i386 bug

NAME

       SELECT INTO - define a new table from the results of a query

SYNOPSIS

       [ WITH [ RECURSIVE ] with_query [, ...] ]
       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 [, ...] ]
           [ WINDOW window_name AS ( window_definition ) [, ...] ]
           [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
           [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
           [ LIMIT { count | ALL } ]
           [ OFFSET start [ ROW | ROWS ] ]
           [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
           [ 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
       associated 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
              created.

       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
       interpret  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 in the documentation) and
       PL/pgSQL (see in the documentation).  The PostgreSQL  usage  of  SELECT
       INTO  to  represent  table  creation  is  historical. It is best to use
       CREATE TABLE AS for this purpose in new code.

SEE ALSO

       CREATE TABLE AS [create_table_as(7)]