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
не будет дублировать индексы, ограничения, триггеры или схему разделов исходной таблицы.