Примеры SQL-запросов для копирования записей из разных таблицы.
К примеру есть две одинаковые по структуре, нужно из таблицы `table_a` скопировать запись с определенными полями в таблицу `table_b`.
INSERT INTO `table_a` (`name`, `alt`, `page`)
SELECT
`name`,
`alt`,
`page`
FROM
`table_b`
WHERE
`id` = 1
Копирование нескольких записей:
INSERT INTO `table_a` (`name`, `alt`, `page`)
SELECT
`name`,
`alt`,
`page`
FROM
`table_b`
WHERE
`id` IN(1,2,3)
Если таблицы `table_a` и `table_b` полностью одинаковые по структуре, то названия полей можно опустить.
INSERT INTO `table_b` SELECT * FROM `table_a`
Или указать только нужные поля:
INSERT INTO `table_a` (`name`, `alt`, `page`)
SELECT
`name`,
`alt`,
`page`
FROM
`table_b`
Если таблицы разные по структуре, то можно подогнать названия и значения полей.
INSERT INTO `table_b` (`name`, `alt`, `page`, `module`, `sort`)
SELECT
`filename` AS `name`,
'' AS `alt`,
`page`,
'prod' AS `module`,
1 AS `sort`
FROM
`table_a`
INSERT 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`)
)





