1999-07-22 17:09:15 +02:00
|
|
|
<!--
|
2003-12-14 00:59:07 +01:00
|
|
|
$PostgreSQL: pgsql/doc/src/sgml/ref/select_into.sgml,v 1.27 2003/12/13 23:59:07 neilc Exp $
|
2001-12-08 04:24:40 +01:00
|
|
|
PostgreSQL documentation
|
1999-07-22 17:09:15 +02:00
|
|
|
-->
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<refentry id="SQL-SELECTINTO">
|
|
|
|
<refmeta>
|
2002-04-21 21:02:39 +02:00
|
|
|
<refentrytitle id="SQL-SELECTINTO-TITLE">SELECT INTO</refentrytitle>
|
1999-06-14 09:37:05 +02:00
|
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
|
|
</refmeta>
|
2003-05-04 04:23:16 +02:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<refnamediv>
|
2003-05-04 04:23:16 +02:00
|
|
|
<refname>SELECT INTO</refname>
|
|
|
|
<refpurpose>create a new table from the results of a query</refpurpose>
|
|
|
|
</refnamediv>
|
|
|
|
|
2003-08-31 19:32:24 +02:00
|
|
|
<indexterm zone="sql-selectinto">
|
|
|
|
<primary>SELECT INTO</primary>
|
|
|
|
</indexterm>
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<refsynopsisdiv>
|
2003-05-04 04:23:16 +02:00
|
|
|
<synopsis>
|
2000-02-21 02:13:52 +01:00
|
|
|
SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replaceable> [, ...] ) ] ]
|
2000-12-12 06:07:59 +01:00
|
|
|
* | <replaceable class="PARAMETER">expression</replaceable> [ AS <replaceable class="PARAMETER">output_name</replaceable> ] [, ...]
|
|
|
|
INTO [ TEMPORARY | TEMP ] [ TABLE ] <replaceable class="PARAMETER">new_table</replaceable>
|
|
|
|
[ FROM <replaceable class="PARAMETER">from_item</replaceable> [, ...] ]
|
1999-06-14 09:37:05 +02:00
|
|
|
[ WHERE <replaceable class="PARAMETER">condition</replaceable> ]
|
2000-12-12 06:07:59 +01:00
|
|
|
[ GROUP BY <replaceable class="PARAMETER">expression</replaceable> [, ...] ]
|
1999-06-14 09:37:05 +02:00
|
|
|
[ HAVING <replaceable class="PARAMETER">condition</replaceable> [, ...] ]
|
2001-10-23 18:42:36 +02:00
|
|
|
[ { UNION | INTERSECT | EXCEPT } [ ALL ] <replaceable class="PARAMETER">select</replaceable> ]
|
2000-12-12 06:07:59 +01:00
|
|
|
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
2002-08-29 02:17:06 +02:00
|
|
|
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
|
2001-09-23 15:34:44 +02:00
|
|
|
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
|
2002-08-28 16:35:37 +02:00
|
|
|
[ FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ] ]
|
2003-05-04 04:23:16 +02:00
|
|
|
</synopsis>
|
1999-06-14 09:37:05 +02:00
|
|
|
</refsynopsisdiv>
|
|
|
|
|
2003-05-04 04:23:16 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Description</title>
|
2001-03-20 21:54:41 +01:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
2001-03-20 21:54:41 +01:00
|
|
|
<command>SELECT INTO</command> 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 <command>SELECT</command>. The new
|
2002-01-20 23:19:57 +01:00
|
|
|
table's columns have the names and data types associated with the
|
2001-03-20 21:54:41 +01:00
|
|
|
output columns of the <command>SELECT</command>.
|
2003-05-04 04:23:16 +02:00
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
<title>Parameters</title>
|
1999-07-14 22:32:59 +02:00
|
|
|
|
2003-05-04 04:23:16 +02:00
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>TEMPORARY</literal> or <literal>TEMP</literal></term>
|
|
|
|
<listitem>
|
1999-07-14 22:32:59 +02:00
|
|
|
<para>
|
2003-05-04 04:23:16 +02:00
|
|
|
If specified, the table is created as a temporary table. Refer
|
|
|
|
to <xref linkend="sql-createtable"
|
|
|
|
endterm="sql-createtable-title"> for details.
|
1999-07-14 22:32:59 +02:00
|
|
|
</para>
|
2003-05-04 04:23:16 +02:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER">new_table</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The name (optionally schema-qualified) of the table to be created.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
All other parameters are described in detail under <xref
|
|
|
|
linkend="sql-select" endterm="sql-select-title">.
|
1999-06-14 09:37:05 +02:00
|
|
|
</para>
|
|
|
|
</refsect1>
|
2001-03-20 21:54:41 +01:00
|
|
|
|
2003-05-04 04:23:16 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Notes</title>
|
|
|
|
|
|
|
|
<para>
|
2003-12-01 23:08:02 +01:00
|
|
|
<xref linkend="sql-createtableas"
|
|
|
|
endterm="sql-createtableas-title"> is functionally similar to
|
|
|
|
<command>SELECT INTO</command>. <command>CREATE TABLE AS</command>
|
|
|
|
is the recommended syntax, since this form of <command>SELECT
|
|
|
|
INTO</command> is not available in <application>ECPG</application>
|
|
|
|
or <application>PL/pgSQL</application>, because they interpret the
|
|
|
|
<literal>INTO</literal> clause differently. Furthermore,
|
|
|
|
<command>CREATE TABLE AS</command> offers a superset of the
|
|
|
|
functionality provided by <command>SELECT INTO</command>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2003-12-14 00:59:07 +01:00
|
|
|
Prior to <productname>PostgreSQL</> 7.5, the table created by
|
|
|
|
<command>SELECT INTO</command> always included OIDs. Furthermore,
|
|
|
|
these OIDs were newly generated: they were distinct from the OIDs
|
|
|
|
of any of the rows in the source tables of the <command>SELECT
|
|
|
|
INTO</command> statement. Therefore, if <command>SELECT
|
|
|
|
INTO</command> was frequently executed, the OID counter would be
|
|
|
|
rapidly incremented. As of <productname>PostgreSQL</> 7.5, the
|
|
|
|
inclusion of OIDs in the table created by <command>SELECT
|
|
|
|
INTO</command> is controlled by the
|
|
|
|
<varname>default_with_oids</varname> configuration variable. This
|
|
|
|
variable currently defaults to true, but will likely default to
|
|
|
|
false in a future release of <productname>PostgreSQL</>.
|
2003-05-04 04:23:16 +02:00
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
<title>Compatibility</title>
|
|
|
|
|
|
|
|
<para>
|
2003-12-01 23:08:02 +01:00
|
|
|
The SQL standard uses <command>SELECT INTO</command> to
|
2003-05-04 04:23:16 +02:00
|
|
|
represent selecting values into scalar variables of a host program,
|
|
|
|
rather than creating a new table. This indeed is the usage found
|
|
|
|
in <application>ECPG</application> (see <xref linkend="ecpg">) and
|
|
|
|
<application>PL/pgSQL</application> (see <xref linkend="plpgsql">).
|
|
|
|
The <productname>PostgreSQL</productname> usage of <command>SELECT
|
|
|
|
INTO</command> to represent table creation is historical. It's
|
|
|
|
best to use <command>CREATE TABLE AS</command> for this purpose in
|
|
|
|
new code. (<command>CREATE TABLE AS</command> isn't standard
|
|
|
|
either, but it's less likely to cause confusion.)
|
|
|
|
</para>
|
2001-03-20 21:54:41 +01:00
|
|
|
</refsect1>
|
1999-06-14 09:37:05 +02:00
|
|
|
</refentry>
|
|
|
|
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
|
|
Local variables:
|
|
|
|
mode: sgml
|
1999-07-14 22:32:59 +02:00
|
|
|
sgml-omittag:nil
|
1999-06-14 09:37:05 +02:00
|
|
|
sgml-shorttag:t
|
|
|
|
sgml-minimize-attributes:nil
|
|
|
|
sgml-always-quote-attributes:t
|
|
|
|
sgml-indent-step:1
|
|
|
|
sgml-indent-data:t
|
|
|
|
sgml-parent-document:nil
|
|
|
|
sgml-default-dtd-file:"../reference.ced"
|
|
|
|
sgml-exposed-tags:nil
|
|
|
|
sgml-local-catalogs:"/usr/lib/sgml/catalog"
|
|
|
|
sgml-local-ecat-files:nil
|
|
|
|
End:
|
|
|
|
-->
|