?
? ????? PHP ??? ???? ??? ?? ??
[ 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從一個(gè)查詢(xún)的計(jì)算結(jié)果中創(chuàng)建一個(gè)新表。 數(shù)據(jù)并不返回給客戶(hù)端,這一點(diǎn)和普通的SELECT不同。 新表的字段具有和SELECT的輸出字段相同的名字和數(shù)據(jù)類(lèi)型。
如果聲明了這個(gè)關(guān)鍵字,那么該表是作為一個(gè)臨時(shí)表創(chuàng)建的。請(qǐng)參考CREATE TABLE獲取細(xì)節(jié)。
要?jiǎng)?chuàng)建的表的名字(可以有模式修飾)
所有其它輸入的域都在 SELECT中有詳細(xì)描述。
CREATE TABLE AS的作用和SELECT INTO類(lèi)似。 建議使用CREATE TABLE AS語(yǔ)法, 因?yàn)?tt class="COMMAND">SELECT INTO不是標(biāo)準(zhǔn)語(yǔ)法。實(shí)際上,它是不能在ECPG或PL/pgSQL中使用的, 因?yàn)樗鼈儗?duì)INTO子句的解釋是不同的。而且,CREATE TABLE AS提供了SELECT INTO所提供功能的超集。
在PostgreSQL以前,SELECT INTO創(chuàng)建的表總是缺省包含OID。 到了PostgreSQL8.1,這不再是缺省了, 要想在新表中包含OID,可以打開(kāi)default_with_oids配置參數(shù)或使用WITH OIDS子句。
創(chuàng)建一個(gè)新表films_recent,它的值包含來(lái)自films的最近的條目:
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';
SQL標(biāo)準(zhǔn)用SELECT INTO表示選取數(shù)值到一個(gè)宿主程序的標(biāo)量變量中, 而不是創(chuàng)建一個(gè)新表。這種用法實(shí)際上就是在ECPG(參閱Chapter 33)和 PL/pgSQL(參閱Chapter 39)里的用途。 PostgreSQL用SELECT INTO創(chuàng)建表是歷史原因。在新代碼里最好使用CREATE TABLE AS實(shí)現(xiàn)這個(gè)目的。