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_clauses是SELECT语句中可用的子句,这包括:
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 语句从查询结果集创建新表。