# 选择进入
SELECT INTO — 根据查询结果定义一个新表
# 概要
[ 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 ] [...] ]
# 描述
选择进入
创建一个新表并用查询计算的数据填充它。数据不会返回给客户端,因为它是正常的选择
.新表的列的名称和数据类型与选择
.
# 参数
暂时的
或者温度
如果指定,则将该表创建为临时表。参考创建表详情。
未记录
如果指定,则将该表创建为未记录的表。参考创建表详情。
新表
要创建的表的名称(可选的模式限定)。
所有其他参数在下面详细描述选择.
# 笔记
创建表为
在功能上类似于选择进入
.创建表为
是推荐的语法,因为这种形式的选择进入
在 ECPG 或 PL/pgSQL 中不可用,因为它们解释进入
条款不同。此外,创建表为
提供了由选择进入
.
相比之下创建表为
,选择进入
不允许指定像表的访问方法这样的属性使用 *
方法*
或表的表空间表空间 *
表空间名称*
.采用创建表为
如有必要。因此,为新表选择默认表访问方法。看默认_桌子_使用权_方法了解更多信息。
# 例子
创建一个新表电影_最近
仅由表中的最近条目组成电影
:
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';
# 兼容性
SQL 标准使用选择进入
将选择值表示为主机程序的标量变量,而不是创建新表。这确实是 ECPG 中的用法(参见第36章) 和 PL/pgSQL (参见第 43 章)。PostgreSQL 的使用选择进入
表示表创建是历史性的。其他一些 SQL 实现也使用选择进入
以这种方式(但大多数 SQL 实现都支持创建表为
反而)。除了这样的兼容性考虑,最好使用创建表为
为此在新代码中。