?
本文檔使用
php中文網(wǎng)手冊 發(fā)布
[ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ [ AS ] output_name ] [, ...] INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ WINDOW window_name AS ( window_definition ) [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
SELECT INTO從一個查詢的計算結(jié)果中創(chuàng)建一個新表。 數(shù)據(jù)并不返回給客戶端,這一點和普通的SELECT不同。 新表的字段具有和SELECT的輸出字段相同的名字和數(shù)據(jù)類型。
如果聲明了這個關(guān)鍵字,那么該表是作為一個臨時表創(chuàng)建的。請參考CREATE TABLE獲取細(xì)節(jié)。
要創(chuàng)建的表的名字(可以有模式修飾)
所有其它輸入的域都在 SELECT中有詳細(xì)描述。
CREATE TABLE AS的作用和SELECT INTO類似。 建議使用CREATE TABLE AS語法, 因為SELECT INTO不是標(biāo)準(zhǔn)語法。實際上,它是不能在ECPG或PL/pgSQL中使用的, 因為它們對INTO子句的解釋是不同的。而且,CREATE TABLE AS提供了SELECT INTO所提供功能的超集。
在PostgreSQL以前,SELECT INTO創(chuàng)建的表總是缺省包含OID。 到了PostgreSQL8.1,這不再是缺省了, 要想在新表中包含OID,可以打開default_with_oids配置參數(shù)或使用WITH OIDS子句。
創(chuàng)建一個新表films_recent,它的值包含來自films的最近的條目:
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';
SQL標(biāo)準(zhǔn)用SELECT INTO表示選取數(shù)值到一個宿主程序的標(biāo)量變量中, 而不是創(chuàng)建一個新表。這種用法實際上就是在ECPG(參閱Chapter 33)和 PL/pgSQL(參閱Chapter 39)里的用途。 PostgreSQL用SELECT INTO創(chuàng)建表是歷史原因。在新代碼里最好使用CREATE TABLE AS實現(xiàn)這個目的。