Postgres - 从SELECT中创建表

时间:2014-04-09 05:22:47

标签: sql postgresql

我有两个表,一个包含大量的ID和关于这些ID的信息。

我有第二个表Graph,它只有两列,每列包含前面提到的id号,多次。我想通过仅选择出现在我的图表中的那些ID并创建一个新的较小的Info表来修剪Info表的大小。有一个简单的方法吗?

从SELECT创建表?

谢谢!

A

2 个答案:

答案 0 :(得分:24)

这很简单:

create table new_table
as 
select t1.col1, t2.col2
from some_table t1
   join t2 on t1.id = t2.some_id;

您可以使用任何select语句。新表的列名由查询中使用的列别名定义。

手册中的更多详细信息:http://www.postgresql.org/docs/current/static/sql-createtableas.html

答案 1 :(得分:10)

如果您只需要为该会话使用那些小表,则可以创建TEMP表。您可以使用以下查询来执行此操作。

  DROP TABLE IF EXISTS temp_table;
    CREATE TEMP TABLE temp_table AS
     SELECT 
       i.id as info_id, i.information as information
     FROM
      info i
      INNER JOIN graph g ON i.id = g.id;

现在,您可以将此temp_table用于函数中的下一个表。

                    OR 

您也可以创建如下表格(如果您不想将其创建为TEMP):

CREATE TABLE temp_table AS
     SELECT 
       i.id as info_id, i.information as information
     FROM
      info i
      INNER JOIN graph g ON i.id = g.id;