Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разный синтаксис insert - в чём разница? / 4 сообщений из 4, страница 1 из 1
17.10.2018, 17:04
    #39718990
Andrea911
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разный синтаксис insert - в чём разница?
Приветствую!
Подскажите, в чём разница между этими двумя вариантами инсерта?

Insert into tbl1(col1, col2) select col1, col2 from tbl2
И
Insert into tbl1
Select
Col1 = tbl2.col1
Col2 = tbl2.col2
from tbl2
(Пардон за форматирование, пишу с телефона, очень неудобно)
...
Рейтинг: 0 / 0
17.10.2018, 17:16
    #39718998
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разный синтаксис insert - в чём разница?
Andrea911,

ну, например, в том что во втором случае алиас колонок не имеет никакого значения
ну и более "правильно" и меньше проблем в личной жизни это первый вариант, с перечислением колонок на вставку
...
Рейтинг: 0 / 0
17.10.2018, 19:27
    #39719073
Владимир Затуливетер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разный синтаксис insert - в чём разница?
Код: sql
1.
2.
3.
4.
5.
insert into tbl1
select 
Col1 = tbl2.col1
Col2 = tbl2.col2
from tbl2


Вот эти столбцы это алиасы для селекта, а не для инсерта в таблицу tbl1.


Вот такой запрос все равно не вставит tbl2.col1 в tbl1.col2 и tbl2.col2 в tbl1.col1:
Код: sql
1.
2.
3.
4.
5.
insert into tbl1
select 
Col2 = tbl2.col1
Col1 = tbl2.col2
from tbl2


Если стобцы не указаны в insert to то они берутся в порядке в котором объявлены в таблице, и не важно какие алиасы в select.
Код: sql
1.
2.
insert into tbl1 --не указал список столбцов? порядок будет как в дефинишене таблицы tbl1
select ...



Best practices: Всегда указывать столбцы в insert to. Во первых читается лучше, во вторых при изменении таблицы не будет сюрпризов.
т.е. ваш первый вариант, самый правильный.
Код: sql
1.
insert into tbl1(col1, col2) select col1, col2 from tbl2
...
Рейтинг: 0 / 0
18.10.2018, 07:34
    #39719166
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разный синтаксис insert - в чём разница?
второй запрос будет работать не на всех SQL-серверах, в частности, Оракл свалит ошибку
Код: sql
1.
2.
3.
4.
5.
Select Col1 = tbl2.col1,
       Col2 = tbl2.col2
  from tbl2

ORA-00923: ключевое слово FROM не найдено там, где оно ожидалось
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разный синтаксис insert - в чём разница? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]