Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将pg_查询结果存储在表中_Php_Sql_Postgresql - Fatal编程技术网

Php 将pg_查询结果存储在表中

Php 将pg_查询结果存储在表中,php,sql,postgresql,Php,Sql,Postgresql,是否可以将查询结果存储在表中 例如,我目前在php中使用以下方法运行查询: 然后我使用pg_fetch_row访问结果并将其返回到web浏览器。但是,我也希望将结果存储在一个新表中。我知道我可以运行相同的查询两次,因此我还可以: $sql_2 = "CREATE newtable AS SELECT id FROM mytable"; $query = pg_query($connection, $sql_2); 我很好奇是否有一种更有效的方法来组织我的查询,这样我既可以访问结果,又可以通过一

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

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

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

$sql_2 = "CREATE newtable AS SELECT id FROM mytable";
$query = pg_query($connection, $sql_2);
我很好奇是否有一种更有效的方法来组织我的查询,这样我既可以访问结果,又可以通过一个查询将结果插入到表中。

不幸的是,CREATE table命令似乎不接受RETURNING子句,因此不允许该命令也返回结果。因此,您可能需要执行两个查询

您可以先交换查询以创建新表,然后通过从新表中选择来获取结果。访问新创建的表可能比两次执行初始查询要快一些,因为postgres不需要查看任何不相关的数据。这还可以保证在两个位置显示相同的结果。

不幸的是,CREATE TABLE命令似乎不接受RETURNING子句,因此不允许该命令同时返回结果。因此,您可能需要执行两个查询


您可以先交换查询以创建新表,然后通过从新表中选择来获取结果。访问新创建的表可能比两次执行初始查询要快一些,因为postgres不需要查看任何不相关的数据。这还可以保证在两个位置都显示相同的结果。

对新创建的表进行seqscan几乎是免费的。可能有一些提示位设置,但仅此而已。我真的不明白在一个查询中完成所有操作的意义。在新创建的表上执行seqscan几乎是免费的。可能有一些提示位设置,但仅此而已。我真的不认为在一个查询中完成所有任务有什么意义。
$sql_2 = "CREATE newtable AS SELECT id FROM mytable";
$query = pg_query($connection, $sql_2);