pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
SELECT INTO — 从一个查询的结果创建一个新表
SELECT [ ALL | DISTINCT [ ON (expression[, ...] ) ] ] * |expression[ ASoutput_name] [, ...] INTO [ TEMPORARY | TEMP ] [ TABLE ]new_table[ FROMfrom_item[, ...] ] [ WHEREcondition] [ GROUP BYexpression[, ...] ] [ HAVINGcondition[, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ]select] [ ORDER BYexpression[ ASC | DESC | USINGoperator] [, ...] ] [ LIMIT {count| ALL } ] [ OFFSETstart] [ FOR UPDATE [ OFtablename[, ...] ] ]
如果指定,该表将创建为临时表。详见 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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。