Select into sql: SQL SELECT INTO Statement

Оператор PostgreSQL SELECT INTO на практических примерах

Резюме : в этом руководстве вы узнаете, как использовать оператор PostgreSQL SELECT INTO для создания новой таблицы из набора результатов запроса.

Если вы ищете способ выбора данных в переменные, ознакомьтесь с оператором PL/pgSQL SELECT INTO .

Знакомство с оператором PostgreSQL SELECT INTO

Оператор PostgreSQL SELECT INTO создает новую таблицу и вставляет в нее данные, возвращенные запросом.

В новой таблице столбцы будут иметь те же имена, что и столбцы результирующего набора запроса. В отличие от обычного оператора SELECT , оператор SELECT INTO не возвращает результат клиенту.

Ниже показан синтаксис оператора PostgreSQL SELECT INTO :

 SELECT
    select_list
В [ВРЕМЕННО | ТЕМП | UNLOGGED ] [ TABLE ] новое_имя_таблицы
ОТ
    имя_таблицы
ГДЕ
    условие_поиска;
  Язык кода: SQL (язык структурированных запросов) (sql)  

Чтобы создать новую таблицу со структурой и данными, полученными из набора результатов, вы указываете имя новой таблицы после ключевого слова INTO .

Ключевое слово TEMP или TEMPORARY является необязательным; вместо этого вы можете создать временную таблицу.

Ключевое слово UNLOGGED , если оно доступно, сделает новую таблицу незарегистрированной.

Предложение WHERE позволяет указать строки из исходных таблиц, которые должны быть вставлены в новую таблицу. Помимо WHERE , вы можете использовать другие предложения в операторе SELECT для оператора SELECT INTO , такие как INNER JOIN , LEFT JOIN , GROUP BY и

HAVING 6.

Обратите внимание, что вы не можете использовать оператор SELECT INTO в PL/pgSQL, поскольку он иначе интерпретирует предложение INTO . В этом случае вы можете использовать оператор CREATE TABLE AS , который предоставляет больше возможностей, чем оператор 9.0005 Оператор SELECT INTO .

PostgreSQL SELECT INTO examples

Для демонстрации мы будем использовать таблицу film из примера базы данных.

Следующий оператор создает новую таблицу с именем film_r , которая содержит фильмы с рейтингом R и сроком проката 5 дней из таблицы film .

 ВЫБОР
    фильм_идентификатор,
    заголовок,
    арендная плата
В СТОЛ film_r
ОТ
    фильм
ГДЕ
    рейтинг = 'R'
И rent_duration = 5
СОРТИРОВАТЬ ПО
    заголовок;
  Язык кода: SQL (язык структурированных запросов) (sql)  

Для проверки создания таблицы можно запросить данные из таблицы film_r :

 SELECT * FROM film_r;  Язык кода: SQL (язык структурированных запросов) (sql)  

Следующий оператор создает временную таблицу с именем short_film , содержащую фильмы продолжительностью менее 60 минут.

 ВЫБОР
    фильм_идентификатор,
    заголовок,
    длина
INTO TEMP TABLE короткометражный фильм
ОТ
    фильм
ГДЕ
    длина < 60
СОРТИРОВАТЬ ПО
    заголовок;  Язык кода: SQL (язык структурированных запросов) (sql)  

Ниже показаны данные из таблицы short_film :

 SELECT * FROM short_film;  Язык кода: SQL (язык структурированных запросов) (sql)  

В этом руководстве вы узнали, как использовать оператор PostgreSQL SELECT INTO для создания новой таблицы из набора результатов запроса.

Было ли это руководство полезным?

sql server — Какой смысл в WHERE 1 = 2 для запроса таблицы SELECT INTO

спросил

Изменено
3 месяца назад

Просмотрено
39 тысяч раз

Если мы хотим создать новую таблицу из существующей в SQL Server, мы можем сделать следующее

 SELECT * в Table2
из таблицы 1
ГДЕ 1=2
 

Какой смысл в предложении where? Я попробовал это без пункта where, и он работал нормально. Я видел это предложение where во многих примерах в Интернете, но не по той причине, по которой оно требуется.

  • sql-server

Причина, по которой вы поместили предложение WHERE 1=2 в этот запрос SELECT INTO , заключается в создании копии поля существующей таблицы с без данных .

Если вы сделали это:

 выберите *
в Таблицу2
из таблицы 1
 

Table2 будет точной копией Table1 , включая строки данных. Но если вы не хотите, чтобы данные содержались в Table1 , и вам нужна только структура таблицы, вы ставите WHERE , чтобы отфильтровать все данные.

BOL SELECT INTO Цитата:

SELECT…INTO создает новую таблицу в файловой группе по умолчанию, а вставляет в нее результирующие строки из запроса.

Если в предложении WHERE нет результирующих строк, они не будут вставлены в новую таблицу: Таким образом, вы получите дублирующую схему исходной таблицы без данных (что было бы желаемым результатом в этом случае).

Того же эффекта можно добиться с помощью TOP (0) , например:

 select top (0) *
в Таблицу2
из таблицы 1;
 

Примечание : SELECT INTO не будет дублировать индексы, ограничения, триггеры или схему разделов исходной таблицы.