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 [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start ] [ FOR UPDATE [ OF tablename [, ...] ] ]
指定された場合、テーブルは一時テーブルとして作成されます。詳細は CREATE TABLEを見て下さい。
作成するテーブルの名前です (スキーマ修飾名でも可)。
その他の全ての入力は SELECT で詳細が説明されています。
SELECT INTO は新しいテーブルを作成し問い合わせによって計算されるデータを格納します。そのデータは通常の SELECT のようにクライアントには返されません。新しいテーブルの列は SELECTの出力列と関連するデータ型と名前を持ちます。
Note: CREATE TABLE ASは機能的には SELECT INTO と同じです。SELECT INTO は標準ではないので、構文はCREATE TABLE AS をお勧めします。実際、このSELECT INTO という形式は PL/pgSQL や ecpg では有効ではありません。 なぜならそれらは INTO 句を異なって解釈するからです。
SQL92 は、選択する値をホストプログラムのスカラー変数で選択する値を表示するために、新しいテーブルを作成するのではなく、SELECT ... INTO を使います。これは PL/pgSQL と ecpg で見つけられる使用法です。テーブル作成を表す SELECT INTO のPostgreSQL 使用は歴史的なものです。新しいコードではこの目的には CREATE TABLE ASを使うのが最善です。(CREATE TABLE AS も標準ではありませんが、これのほうが混乱を招く可能性が少ないです。