Скажем, table1
и table2
уже существуют, есть ли разница между этими запросами
query1: -
select * into table1 from table2 where 1=1
query2: -
insert into table1 select * from table2
Скажем, table1
и table2
уже существуют, есть ли разница между этими запросами
query1: -
select * into table1 from table2 where 1=1
query2: -
insert into table1 select * from table2
select * into table1 from table2 where 1=1
создает таблицу1 и вставляет в нее значения table2. Итак, если таблица уже создана, оператор будет давать ошибку.
insert into table1 select * from table2
только вставляет значения таблицы2 в таблицу1.
Первый ( SELECT INTO
) будет создавать и заполнять новую таблицу второй ( INSERT... SELECT
) вставкой в существующую таблицу.
В версиях SQL Server до 2008 года первый может быть минимально зарегистрирован, а второй - нет, но это уже не так.
select * into table1 from table2 where 1=1
Запрос выше требует, чтобы таблица НЕ существовала. Вам не нужно указывать столбцы, поскольку все столбцы создаются по мере их получения из исходной таблицы.
insert into table1 select * from table2
Для вышеуказанного запроса вам нужна СУЩЕСТВУЮЩАЯ таблица1. Столбцы в обеих таблицах также должны быть в точно таком же порядке, иначе вам нужно предоставить список столбцов для обеих таблиц.
В query2 таблица table1
должна существовать до запуска команды
В Query1, table1
будет создана или будет сгенерировано исключение, если он уже существует
INSERT INTO TABLE_A SELECT * FROM TABLE_B
Является обычно используемым предложением, которое используется для вставки значений таблицы в другую таблицу. Выбранные столбцы также могут быть вставлены с использованием этого.
SELECT * INTO TABLE_A FROM TABLE_B
Создает новый TABLE_A, заполненный значениями TABLE_B