Я использую MySQL 5.1.41 на Ubuntu 12.10 и MySQL Workbench.
У меня есть 2 таблицы продуктов, t1 и t2.t1 - оперативные данные, а t2 - импортированные данные, готовые к обновлению в t1 для обновления всех новых цен на товары.Итак, я запускаю:
SELECT * FROM t1
JOIN t2 ON t1.id = t2.id
WHERE t1.price != t2.price;
Это возвращает 1201 записей, где цена отличается и должна быть обновлена.Поэтому я запускаю:
UPDATE t1 JOIN t2 ON t1.id = t2.id
SET t1.price = t2.price
WHERE t1.price != t2.price;
Это завершается без ошибок и сообщает об 1143 поврежденных строках, Соответствие строк: 1143 Изменено: 1143 Предупреждения: 0
Так что что-то здесь уже не так.1201 записей были различны в запросе на выборку, но только 1143 изменились с использованием того же соединения и критериев?
При выполнении начального запроса на выборку я бы ожидал увидеть 58 записей, которые по-прежнему имели разные цены.Но при запуске я получаю тот же 1201, что и изначально.Как будто обновления не фиксируются.
Есть идеи?