удалить из таблицы на основе другой базы данных MySQL - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть две базы данных MySQL, которые имеют одинаковую структуру.Однако содержимое отличается: DB1 получает самые последние данные за последние 10 дней каждый день.DB2 содержит данные о последних годах.

Я хочу выполнить следующее:

Шаг 1: Удалить из db2.t1, если column1 существует в column1 в db1.t1

Шаг 2: Вставьте все из db1.t1 в db2.t1

1 Ответ

0 голосов
/ 07 февраля 2019

Шаг 1: Удалить из db2.t1, если column1 существует в column1 в db1.t1

Шаг 2: Вставить все из db1.t1 в db2.t1

Похоже, вы пытаетесь объединить данные из db1.t1 в db2.t1.Если это так, то одним из решений будет использование оператора mysql INSERT ... ON DUPLICATE KEY UPDATE.Это позволяет вам иметь дело с дубликатами при выполнении запроса INSERT: в вашем случае кажется, что вы можете обновить все столбцы исходной таблицы.

Сначала это сработает, если только column1 не являетсяPRIMARY KEY, вам нужно ограничение UNIQUE для column1 на целевой таблице (в вашем случае лучше добавить его и в исходную таблицу):

ALTER TABLE db2.t1 ADD CONSTRAINT t1_bk UNIQUE (column1);

Тогда:

INSERT INTO db2.t1 t_target
SELECT t_source.* FROM db1.t1 t_source
ON DUPLICATE KEY UPDATE 
    t_target.column2 = t_source.column2,
    t_target.column3 = t_source.column3,
    ...
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...