2016-09-08 7 views
0

У меня есть две таблицы original и original_backup, я создаю скрипт отката, который принимает все данные из original_backup и помещает его обратно в original, вопрос у меня есть, есть около 60 столбцов. Есть ли простой способ перемещения всех данных с помощью UPDATE и SET без указания каждого столбца?MySQL Обновить все значения из другой таблицы

Например, что-то вроде: UPDATE original SET * FROM original_backup WHERE original.id = original_backup.id;

Использование REPLACE не вариант в данном случае.

+0

no is not – Drew

+0

Вы можете сделать это примерно в 6 операциях с помощью [IODKU] (http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html) и реальный [Rube Goldberg] (https://en.wikipedia.org/wiki/Rube_Goldberg) путь – Drew

ответ

0

Вы можете сделать это как два шага вещь:

DELETE FROM original 
INSERT INTO original SELECT * FROM original_backup 

Это займет некоторое время. Чтобы вырезать более почище:

CREATE TABLE original_restored AS SELECT * FROM original_backup 
RENAME TABLE original TO original_prev, original_restored TO original 
0

Это мое решение, но им не использовать UPDATE заявление:

1) Удалить все данные из оригинального

2) пробегают выберите вставки запроса

что-то вроде этого:

INSERT INTO original (Field1, Field2) 
SELECT a.Field1, a.Field2 
FROM original_backup a 
INNER JOIN original b ON a.ID = b.ID