Багаторядковий INSERT
Синтаксис
INSERT INTO таблиця (колонка1, [колонка2, ... ]) SELECT (колонка1a, [колонка2a, ...]) FROM таблиця_вибірки WHERE ...
В запис, що міститься в середині багаторядкового оператора INSERT, стандарт SQL вимагає деяких логічних обмежень:
- В запит не можна включати ORDER BY.
- Таблиця результату запиту повинна містити таку ж кількість колонок, що і оператор INSERT.
- Запит не може бути запитом на об'єднання кількох різних операторів SELECT.
- Ім'я цільової таблиці оператора INSERT не може бути присутнім в виразі FROM запиту на читання чи любого запиту, вкладеного в нього. Таким чином забороняється додавання таблиці саму в себе.
Наприклад, якщо ми маємо таблиці такого типу:
Таблиця 1
|
Id |
Name |
Adress |
|
… |
… |
… |
|
|
|
|
Таблиця 2
|
Id |
City |
Phone |
|
… |
… |
… |
|
|
|
|
Тоді запит виду:
INSERT INTO table2 (id,city,phone) SELECT table1.id, table1.name,table1.adress FROM table1 WHERE address=’Ostafova str.’;
Скопіює з першої таблиці поля table1.name= table2. city, table1.adress= table2. phone, table1.id= table2.id, тільки тих рядків де вказана адреса ’Ostafova str.’.