Оператор insert select используется для копирования записей между таблицами.
Формат:
insert into Имя_таблицы '(' Список_полей ')' select Список_отбираемых_полей from Список_таблиц [ where Условие_отбора ];
Аргументы:
Аргумент
Значение
Имя_таблицы
Определяет таблицу, в которую вставляется запись.
Список_полей
Определяет поля, в которые заносятся указанные ниже значения. Эти поля отделяются друг от друга запятыми.
Список_отбираемых_полей
Задает поля, значения которых будут занесены в соответствующие поля очередной новой записи.
Список_таблиц
Задает таблицы, из которых выбирается информация для вставки.
Условие_отбора
Определяет, какие именно записи отбираются.
Количество полей в Списке_полей должно соответствовать количеству полей в Списке_отбираемых_полей. Кроме этого, порядок полей в Списке_полей должен соответствовать порядку значений в Списке_отбираемых_полей.
Оператор insert работает следующим образом: сначала выполняется запрос select ... from ... where и отбираются записи, на основе которых будут формироваться добавляемые записи. Затем для каждой найденной записи создается и заполняется новая запись, которая и заносится в таблицу.
Примеры работы с оператором
Для демонстрации работы оператора создадим таблицу NEW_BOOK, которую заполним данными из таблицы BOOK. При заполнении таблицы будем также использовать кодификатор.
if (table_exists('NEW_BOOK') > 0) drop table NEW_BOOK;
create table NEW_BOOK ( ID dword, AUTHOR char(100), NAME char(100) );