将pg_query的结果存储在表中

时间:2012-10-30 21:21:20

标签: php sql postgresql

是否可以将查询结果存储在表中?

例如,我目前在php中使用以下方法运行查询:

$sql = "SELECT id FROM mytable";
$query = pg_query($connection, $sql);

然后我使用pg_fetch_row()访问结果并将其返回到Web浏览器。但是,我还想将结果存储在一个新表中。我知道我可以运行两次相同的查询,所以我也会:

$sql_2 = "CREATE newtable AS SELECT id FROM mytable";
$query = pg_query($connection, $sql_2);

我很好奇是否有更有效的方法来构建我的查询,这样我就可以访问结果,并通过一个查询将结果插入到表中。

1 个答案:

答案 0 :(得分:4)

不幸的是,CREATE TABLE命令似乎不接受RETURNING子句,因此不允许只有该命令也返回结果。所以你可能需要做两个查询。

您可以先交换查询以创建新表,然后通过选择该新表来获取结果。访问新创建的表可能比执行初始查询快两倍,因为postgres不需要查看任何不相关的数据。这也可以保证两个地方都出现相同的结果。