Postgres - 从SELECT中创建表

use*_*767 16 sql postgresql

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

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

从SELECT中创建表?

谢谢!

一个

a_h*_*ame 28

它很简单:

create table new_table
as 
select t1.col1, t2.col2
from some_table t1
   join t2 on t1.id = t2.some_id;
Run Code Online (Sandbox Code Playgroud)

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

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


Ile*_*tel 11

如果您只需要为该会话使用那些小表,则可以创建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;
Run Code Online (Sandbox Code Playgroud)

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

                    OR 
Run Code Online (Sandbox Code Playgroud)

您也可以创建如下表格(如果您不想将其创建为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;
Run Code Online (Sandbox Code Playgroud)