2012-10-30 76 views
1

是否可以將查詢的結果存儲在表中?將pg_query的結果存儲在表中

例如,我使用下面的方法在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); 

我很好奇,如果有構建我的查詢更有效的方式,這樣我就可以既訪問結果,並插入通過一個查詢結果到一個表中。

回答

4

不幸的是,CREATE TABLE命令似乎不接受RETURNING子句,因此不允許僅僅使用該命令也會返回結果。所以你可能需要做兩個查詢。

您可以交換查詢以首先創建新表,然後通過選擇新的表來獲取結果。由於postgres不需要查看任何不相關的數據,因此訪問新創建的表可能比執行兩次初始查詢要快一些。這也可以保證在兩個地方出現相同的結果。

+0

在新創建的表上執行seqscan幾乎是免費的。可能有一些暗示性的設置,但就是這樣。我真的沒有看到在一個查詢中試圖完成這一切。 –