Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
SELECT INTO(7)		  PostgreSQL 18.6 Documentation 	  SELECT INTO(7)

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 | UNLOGGED ] [ TABLE ] new_table
	 [ FROM from_item [, ...] ]
	 [ WHERE condition ]
	 [ GROUP BY expression [, ...] ]
	 [ HAVING condition ]
	 [ WINDOW window_name AS ( window_definition ) [, ...] ]
	 [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] 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  out-
     put columns of the SELECT.

PARAMETERS
     TEMPORARY or TEMP
	 If  specified, the table is created as a temporary table. Refer to CRE-
	 ATE TABLE (CREATE_TABLE(7)) for details.

     UNLOGGED
	 If specified, the table is created as an unlogged table. Refer to  CRE-
	 ATE 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(7).

NOTES
     CREATE TABLE AS 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.  Fur-
     thermore,	CREATE	TABLE AS offers a superset of the functionality provided
     by SELECT INTO.

     In contrast to CREATE TABLE AS, SELECT INTO does not allow specifying prop-
     erties like a table's access method with USING method or the table's table-
     space with TABLESPACE tablespace_name. Use CREATE TABLE  AS  if  necessary.
     Therefore, the default table access method is chosen for the new table. See
     default_table_access_method for more information.

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 Chapter 34) and PL/pgSQL (see Chapter 41).
     The PostgreSQL usage of SELECT INTO to represent table creation is histori-
     cal. Some other SQL implementations also use SELECT INTO in this  way  (but
     most  SQL implementations support CREATE TABLE AS instead). Apart from such
     compatibility considerations, it is best to use CREATE TABLE  AS  for  this
     purpose in new code.

SEE ALSO
     CREATE TABLE AS (CREATE_TABLE_AS(7))

PostgreSQL 18.6 		      2026			  SELECT INTO(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=SELECT_INTO&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help