Это скопирует все данные из исходной таблицы в целевую таблицу.Вы можете указать, какие столбцы должны идти в какие.изменив имена targetColumn .. и sourceColumn ....
INSERT INTO targetTable (
targetColumn1
targetColumn1
targetColumn1
....
targetColumnN
)
SELECT
sourceColumn1
sourceColumn1
sourceColumn1
....
sourceColumnN
FROM sourceTable
Вы также можете создать sourceTable, выполнив
CREATE TABLE targetTable LIKE sourceTable
EDIT Метод для извлечениявсе данные от sourceTable до targetTable, однако удаляя targetTable, если он существует
DROP TABLE IF EXISTS targetTable;
CREATE TABLE targetTable LIKE sourceTable;
INSERT INTO targetTable SELECT * FROM sourceTable;
EDIT Если вам нужно сохранить старые данные, вам может потребоваться переназначить их, но вы можете объединить их в другие таблицы
CREATE TABLE targetTable LIKE sourceTable;
INSERT INTO targetTable SELECT * FROM sourceTable;
INSERT INTO targetTable ( fieldsToInsertTo ) SELECT fieldsToSelectFrom FROM oldTargetTable ON DUPLICATE KEY ......;
DROP TABLE IF EXISTS oldTargetTable;
RENAME TABLE targetTable TO oldTargetTable;
Однако, возможно, потребуется либо логика ON DUPLICATE KEY UPDATE ....., либо просто INSERT IGNORE на секунду, если вы счастливы выбросить любые конфликтующие строки PRIMARY / UNIQUE.Это предполагает, что у вас есть sourceTable, который вы хотите скопировать и объединить с данными из oldTargetTable.Таблица targetTable - это просто временное имя.
Если вы хотите отдать предпочтение данным из старой таблицы, просто поменяйте местами порядок выполнения INSERT, конечно