Назад | Перейти на главную страницу

MySQL объединяет две таблицы

Ситуация: после сбоя (или взлома, я до сих пор не уверен) некоторые в таблице vB_users исчезли. У меня есть резервная копия этой таблицы, но с тех пор появились новые записи. Есть ли быстрый способ добавить все строки из поврежденной таблицы в резервную таблицу и перезаписать существующие строки? Я имею в виду, объедините их, но разбитая версия должна иметь приоритет над старой.

Переименовать разбитую таблицу, восстановить резервную копию (с МАРТА? Ой), переименовать который один, создайте новую таблицу со старым именем, затем выполните что-то вроде:

INSERT INTO vB_users SELECT * FROM crashed_table UNION SELECT * FROM restored_table;

Это может работать не совсем правильно, если записи имеют одинаковый PK, но разные значения; вы, вероятно, можете сделать несколько хитрых вещей, чтобы исправить это.

Предполагая, что ваша поврежденная таблица находится в БД с именем current, ваша восстановленная резервная копия находится в БД с именем backup, и есть первичный ключ с именем id:

create table current.tempUsers as select * from backup.vB_users ub where not exists (select 1 from current.vB_Users uc where uc.id = ub.id);

insert into current.vB_users select * from current.tempUsers; 

drop table current.tempUsers;