Иллюстрированный самоучитель по PostgreSQL

SELECT INTO

Создание новой таблицы по результатам команды SELECT.

Синтаксис:

SELECT [ ALL | DISTINCT [ ON (уникальное_выражение [….]) ] ]
цель [ AS выходное имя ] [,…] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] новая_таблица ]
[ FROM источник [ {. | CROSS JOIN }…] ]
[ WHERE условие_фильтрации ]
[ GROUP BY условие_группировки [,…] ]
[ HAVING агрегатное_условие [,…] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL ] подзапрос ]
[ ORDER BY выражение [ ASC | DESC | USING оператор ] [….] ]
[ FOR UPDATE [ OF таблица [,…]]]
[ LIMIT { число | ALL } [ { OFFSET |, } начало ] ]
источник:: = { [ ONLY ] таблица [ * ]
[ [ AS ] псевдоним_источника [ (список_псевдонимов) ] ] |
(подзапрос) [ [ AS ] псевдоним [ (список_псевдонимов) ] ] |
источник [ NATURAL ] тип_объединения источник
[ ON (условие_объединения) USING (список_полей_объединения) ]
тип_объединения:: = [ INNER |
LEFT [ OUTER ]
RIGHT [ OUTER ] |
FULL [ OUTER ] ] JOIN

Параметры:

Большая часть параметров команды SELECT INTO совпадает с параметрами команды SELECT. В команде SELECT INTO поддерживаются всего два новых параметра.

  • TEMPORARY, TEMP. Ключевое слово TEMPORARY (или TEMP) означает, что таблица предназначена для временного использования; после завершения сеанса она автоматически уничтожается.
  • новая_таблица. Имя таблицы, создаваемой для хранения записей итогового набора запроса. Таблица создается автоматически и не должна существовать до момента выполнения команды.

Результаты:

Возможные результаты перечислены в описаниях команд CREATE TABLE и SELECT.

Описание

Команда SELECT INTO выполняет запрос и использует полученные записи для заполнения новой (автоматически созданной) таблицы. Имена полей и типы данных новой таблицы определяются структурой записей, полученных в результате запроса. С функциональной точки зрения команда SELECT INTO эквивалентна команде CREATE TABLE AS. На практике рекомендуется использовать команду CREATE TABLE AS, поскольку команда SELECT INTO не является стандартной и неправильно интерпретируется PL/pgSQL.

Пример

Следующая команда создает временную таблицу для хранения записей о работниках, коды которых меньше 105:

booktown=# SELECT * INTO TEMP TABLE old_emp
booktown-# FROM employees booktown-# WHERE id < 105;
SELECT
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.