返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

SELECT INTO

发布于 2019-09-30 03:11:43 字数 2161 浏览 1125 评论 0 收藏 0

名称

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 | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]

描述

SELECT INTO 从一个查询的计算结果中创建一个新表。数据并不返回给客户端,这一点和普通的 SELECT 不同。新表的字段具有和 SELECT 的输出字段相同的名字和数据类型。

参数

TEMPORARYTEMP

如果声明了这个关键字,那么该表是作为一个临时表创建的。请参考 CREATE TABLE 获取细节。

new_table

要创建的表的名字(可以有模式修饰)

所有其它输入的域都在 SELECT 中有详细描述。

注意

CREATE TABLE AS 的作用和 SELECT INTO 类似。建议使用 CREATE TABLE AS 语法,因为 SELECT INTO 不是标准语法。实际上,它是不能在 ECPG 或 PL/pgSQL 中使用的,因为它们对 INTO 子句的解释是不同的。而且,CREATE TABLE AS 提供了 SELECT INTO 所提供功能的超集。

在 PostgreSQL 8.1 以前, SELECT INTO 创建的表总是缺省包含 OID 。到了 PostgreSQL 8.1 ,这不再是缺省了,要想在新表中包含 OID ,可以打开 default_with_oids 配置参数或使用 WITH OIDS 子句。

例子

创建一个新表 films_recent ,它的值包含来自 films 的最近的条目:

SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';

兼容性

SQL 标准用 SELECT INTO 表示选取数值到一个宿主程序的标量变量中,而不是创建一个新表。这种用法实际上就是在 ECPG(章31) 和 PL/pgSQL(章37)里的用途。PostgreSQL 用 SELECT INTO 创建表是历史原因。在新代码里最好使用 CREATE TABLE AS 实现这个目的。

又见

CREATE TABLE AS

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文