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