В статье предоставлены примеры SQL-запросов для копирования записей из разных таблиц.
Полное копирование
Если таблицы `table_a` и `table_b` полностью одинаковые по структуре, то названия полей можно опустить.
I NSERT INTO `table_b`
SELECT *
FROM `table_a`
Или указать только нужные поля:
I NSERT INTO `table_a` (`name`, `alt`, `page`)
SELECT `name`, `alt`, `page`
FROM `table_b`
Частичное копирование
К примеру есть две одинаковые по структуре, нужно из таблицы `table_a` скопировать запись с определенными полями в таблицу `table_b`.
I NSERT INTO `table_a` (`name`, `alt`, `page`)
SELECT `name`, `alt`, `page`
FROM `table_b`
WHERE `id` = 1
Копирование с подзапросом в третью таблицу
I NSERT INTO `table_b` (`name`, `alt`, `page`, `module`, `sort`)
SELECT (SELECT `name` FROM `table_c` WHERE `item_id` = `table_a`.`id`) AS `name`, '' AS `alt`, `page`, 'prod' AS `module`, 1 AS `sort`
FROM `table_a`
Копирование записей из двух и более таблиц
INSERT INTO `table_b` (`name`, `email`, `address`)
SELECT * FROM ( (SELECT `name`, `email`, `address` FROM `table_a`)
UNION
( SELECT `name`, `email`, `address` FROM `table_c`) )