Mysql сравнение данных 2-х таблиц

Рейтинг: 1Ответов: 2Опубликовано: 27.02.2015

Здравствуйте, уважаемые форумчане. Имеется следующая задача.

В базе находятся 2 таблицы: actual_test и tmp_test. Обе таблицы имеют абсолютно одинаковую структуру. В таблицу tmp_test каждые N часов пишутся некоторые данные.

Как можно реализовать следующее. Если записи из таблицы tmp_test отличаются от записей в таблице actual_test, обновить соответствующие записи в actual_test.

Пример:

Содержимое actual_test (Внешний ключ, столбец 1, столбец 2)

1,AAA,123
2,BBB,345
3,CCC,678

Содержимое tmp_test (Внешний ключ, столбец 1, столбец 2)

1,AAA,123
2,BAB,345
3,CCC,778

Обновляем записи в actual_test c 2,BBB,345 на 2,BAB,345 и 3,CCC,678 на 3,CCC,778

Ответы

▲ 3Принят

Репликацию одной таблицы можно реализовать с помощью движка для таблиц FEDERATED и указать host=127.0.0.1.

Можно еще с триггерами поиграться - каждое изменение tmp_test вызывает триггер, который обновляет теми-же данными actual_test

▲ 2

Можно примерно так:

UPDATE t1, t2 SET t1.p1 = t2.p1, t1.p2 = t2.p2
WHERE t1.id = t2.id AND (t1.p1 <> t2.p1 OR t1.p2 <> t2.p2)

Где t1 - первая таблица, t2 - вторая. id - идентификатор каждой строки, на что опираемся для сравнения. p1..p2 - параметры, которые необходимо сравнить и заменить.