在SQL 中建立臨時表:快速概述
您的查詢旨在建立一個名為「temp1」的臨時表並用資料填充它具有特定的“register_type”(“%gen%”)。但是,問題是由於使用“CREATE TABLE”而不是“CREATE TABLE AS”而產生的。
正確的方法
建立臨時表並填充它對於查詢中的數據,您應該使用「CREATE TABLE AS」:
CREATE TEMP TABLE temp1 AS SELECT dataid , register_type , timestamp_localtime , read_value_avg FROM rawdata.egauge WHERE register_type LIKE '%gen%' ORDER BY dataid, timestamp_localtime;
This命令在記憶體中建立一個臨時表,並用查詢結果行填充它。它類似於常規表,但駐留在 RAM 中。
了解 PostgreSQL 中的臨時表
臨時表在目前會話中可見,並在會話終止時消失。或者,您可以指定“ON COMMIT DROP”,讓它們在事務結束時消失。
臨時表的替代方案
對於動態臨時表,請考慮使用“CREATE VIEW”,提供持續更新的資料快照。但是,對於靜態快照,首選“CREATE TABLE AS”。
雖然「SELECT INTO」也可以建立臨時表,但不鼓勵這樣做。相反,請使用“CREATE TABLE AS”。 “CREATE TABLE LIKE”僅複製表結構,而不複製資料。
對於僅在單一查詢中使用的臨時表,CTE 或子查詢中的「派生表」提供了輕量級替代方案。
以上是如何在 SQL 中高效建立和填充臨時表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!