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
语句从查询结果集创建新表。