历史版本。 PostgreSQL 7.3 已结束支持。 请参阅 当前版本手册.
SELECT INTO
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和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 也不是标准的,但它不太容易造成混淆。)