↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

SELECT INTO

SELECT INTO — 从一个查询的结果创建一个新表

大纲

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 [ OF tablename [, ...] ] ]
  

输入

TEMPORARY
TEMP

如果指定,该表将创建为临时表。详见 CREATE TABLE。

new_table

要创建的表的名称(可选地带模式限定)。

所有其他输入在 SELECT 中有 详细描述。

输出

可能的输出消息的摘要请参阅 CREATE TABLE 和 SELECT。

描述

SELECT INTO 创建一个新表,并用查询 计算出的数据填充它。与普通的 SELECT 不同,数据不返回给 客户端。新表的列具有与 SELECT 的输出列相关联的名称和 数据类型。

注意

CREATE TABLE AS 在功能上等价于 SELECT INTO。推荐使用 CREATE TABLE AS 语法,因为 SELECT INTO 不是标准的。事实上,这种形式的 SELECT INTO 在 PL/pgSQL 或 ecpg 中 不可用,因为它们对 INTO 子句的解释 不同。

兼容性

SQL92 用 SELECT ... INTO 表示把值选择到宿主程序的 标量变量中,而不是创建 新表。这确实是 PL/pgSQL 和 ecpg 中的用法。 PostgreSQL 用 SELECT INTO 表示创建表是历史 遗留。在新代码中最好用 CREATE TABLE AS 来实现 这一目的。(CREATE TABLE AS 也不是 标准的,但它不太容易造成 混淆。)

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。