PostgreSQL SELECT INTO - 从结果集创建一个新表

本文介绍了如何在 PostgreSQL 中使用 SELECT INTO 语句从一个结果集创建一个新表。

PostgreSQL SELECT INTO 语句允许您从一个查询的结果创建一个新表并将结果集插入到新表,它与 CREATE TABLE ... AS 语句功能相同。

PostgreSQL SELECT INTO 语法

要使用 PostgreSQL SELECT INTO 语句创建一个新表,请遵循以下语法:

SELECT column_list
INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table
[other_clauses]

解释说明:

  • column_list 是查询语句要返回的中的列或者表达式的列表。这些列最终成为新表中的列。 您可以使用 DISTINCT

  • INTO 之后的 new_table 是要创建的表的名字。 TEMPORARY 或者 TEMP 代表新表是一个临时表TABLE 关键字是可以省略。

  • other_clausesSELECT 语句中可用的子句,这包括:

PostgreSQL SELECT INTO 示例

我们将使用 Sakila 示例数据库 中的表进行演示,请您先在 PostgreSQL 中安装 Sakila 示例数据库

在 Sakila 示例数据库 中, film存储了一个 DVD 商店中的可以租赁的所有的影片。

使用 SELECT INTO 完整复制影片表

要将 film 表的所有的行复制到一个新表 film_copy,请使用下面的语句:

SELECT *
INTO TABLE film_copy
FROM film;
SELECT 1000

以下语句从新表中查询数据已验证表是否创建成功:

SELECT count(*) FROM film_copy;
 count
-------
  1000
(1 row)

使用 SELECT INTO 完整复制部分行和列

要将 film 表所有评级为 G 的影片的标题复制到一个新表 film_ranting_g_title,请使用下面的语句:

SELECT title
INTO TABLE film_ranting_g_title
FROM film
WHERE rating = 'G';
SELECT 178

以下语句从新表中查询数据已验证表是否创建成功:

SELECT * FROM film_ranting_g_title;
           title
---------------------------
 ACE GOLDFINGER
 AFFAIR PREJUDICE
 AFRICAN EGG
 ALAMO VIDEOTAPE
 AMISTAD MIDSUMMER
 ANGELS LIFE
 ANNIE IDENTITY
 ARMAGEDDON LOST
 ATLANTIS CAUSE
 AUTUMN CROW
 BAKED CLEOPATRA
 ...
(178 row)

结论

在 PostgreSQL 中,您可以使用 SELECT INTO 语句从查询结果集创建新表。