是否可以将查询结果存储在表中?
例如,我目前在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);
我很好奇是否有更有效的方法来构建我的查询,这样我就可以访问结果,并通过一个查询将结果插入到表中。
答案 0 :(得分:4)
不幸的是,CREATE TABLE
命令似乎不接受RETURNING
子句,因此不允许只有该命令也返回结果。所以你可能需要做两个查询。
您可以先交换查询以创建新表,然后通过选择该新表来获取结果。访问新创建的表可能比执行初始查询快两倍,因为postgres不需要查看任何不相关的数据。这也可以保证两个地方都出现相同的结果。