我有两个表,一个包含大量的ID和关于这些ID的信息。
我有第二个表Graph,它只有两列,每列包含前面提到的id号,多次。我想通过仅选择出现在我的图表中的那些ID并创建一个新的较小的Info表来修剪Info表的大小。有一个简单的方法吗?
从SELECT创建表?
谢谢!
A
答案 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;