【发布时间】:2014-05-22 02:50:03
【问题描述】:
我有两张表,其中一张包含大量 ID 和有关这些 ID 的信息。
我有第二张表Graph,它只有两列,每列多次包含上述 ID 号。我想 trim 我的 Info 表的大小,方法是只选择出现在我的图表中的那些 id 并创建一个新的更小的 Info 表。有没有一种简单的方法可以做到这一点?
CREATE TABLE FROM SELECT?
谢谢!
【问题讨论】:
标签: sql postgresql
我有两张表,其中一张包含大量 ID 和有关这些 ID 的信息。
我有第二张表Graph,它只有两列,每列多次包含上述 ID 号。我想 trim 我的 Info 表的大小,方法是只选择出现在我的图表中的那些 id 并创建一个新的更小的 Info 表。有没有一种简单的方法可以做到这一点?
CREATE TABLE FROM SELECT?
谢谢!
【问题讨论】:
标签: sql postgresql
很简单:
create table new_table
as
select t1.col1, t2.col2
from some_table t1
join t2 on t1.id = t2.some_id;
您可以为此使用任何选择语句。新表的列名由查询中使用的列别名定义。
手册中的更多详细信息:http://www.postgresql.org/docs/current/static/sql-createtableas.html
【讨论】:
DISTINCT 或 GROUP BY - 就像使用任何常规查询一样。
如果您只需要那些小表用于该会话,您可以创建 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;
【讨论】: