SELECT INTO
Синтаксис
[ WITH [ RECURSIVE ] запрос_WITH [, ...] ] SELECT [ ALL | DISTINCT [ ON ( выражение [, ...] ) ] ] * | выражение [ [ AS ] имя_результата ] [, ...] INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] новая_таблица [ FROM элемент_FROM [, ...] ] [ WHERE условие ] [ GROUP BY выражение [, ...] ] [ HAVING условие [, ...] ] [ WINDOW имя_окна AS ( определение_окна ) [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] выборка ] [ ORDER BY выражение [ ASC | DESC | USING оператор ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { число | ALL } ] [ OFFSET начало [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ число ] { ROW | ROWS } ONLY ] [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
Описание
SELECT INTO создаёт новую таблицу и заполняет её данными, полученными из запроса. Данные не передаются клиенту, как с обычной командой SELECT. Колонки новой таблицы получают имена и типы данных, связанные с выходными колонками SELECT.
Параметры
- TEMPORARY или TEMP
Если указано, создаваемая таблица будет временной. За подробностями обратитесь к CREATE TABLE.
- UNLOGGED
Если указано, создаваемая таблица будет нежурналируемой. За подробностями обратитесь к CREATE TABLE.
- новая_таблица
Имя (возможно, дополненное схемой) создаваемой таблицы.
Все другие параметры подробно описываются в SELECT.
Замечания
Команда SELECT INTO действует подобно CREATE TABLE AS, но рекомендуется использовать CREATE TABLE AS, так как SELECT INTO не поддерживается в ECPG и PL/pgSQL, вследствие того, что они воспринимают предложение INTO по-своему. К тому же, CREATE TABLE AS предоставляет больший набор возможностей, чем SELECT INTO.
Чтобы добавить колонку OID в таблицу, создаваемую командой SELECT INTO, необходимо установить конфигурационную переменную default_with_oids. С другой стороны, можно использовать CREATE TABLE AS с предложением WITH OIDS.
Примеры
Создание таблицы films_recent, содержащей только последние записи из таблицы films:
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';
Совместимость
В стандарте SQL команда SELECT INTO применяется для передачи скалярных значений клиентской программе, но не для создания новой таблицы. Именно это применение имеет место в ECPG (см. Главу 33) и в PL/pgSQL (см. Главу 40). В PostgreSQL команда SELECT INTO связана с созданием таблицы по историческим причинам. В новом коде для этих целей лучше использовать CREATE TABLE AS.
Пред. | Начало | След. |
SELECT | Уровень выше | SET |